Rumah  >  Artikel  >  Java  >  Java menggunakan fungsi mark() kelas InputStream untuk menandakan kedudukan dalam strim

Java menggunakan fungsi mark() kelas InputStream untuk menandakan kedudukan dalam strim

WBOY
WBOYasal
2023-07-24 12:46:451183semak imbas

Java menggunakan fungsi mark() kelas InputStream untuk menandakan kedudukan dalam strim

Kelas InputStream ialah kelas teras dalam perpustakaan Java IO dan digunakan untuk membaca data aliran bait. Ia menyediakan banyak kaedah untuk membaca data bait, salah satu kaedah yang sangat berguna ialah mark(). Kaedah mark() boleh menandakan kedudukan dalam strim supaya anda boleh kembali ke kedudukan ini kemudian untuk meneruskan membaca data. Kaedah

mark() ditakrifkan seperti berikut:

public synchronized void mark(int readLimit)

Antaranya, parameter readLimit menentukan bilangan maksimum bait yang boleh dibaca sebelum memanggil kaedah reset(). Iaitu, jika bilangan bait yang dibaca melebihi nilai readLimit, memanggil kaedah reset() akan membuang IOException.

Berikut ialah contoh program yang menunjukkan cara menggunakan kaedah mark() dan reset():

import java.io.*;

public class InputStreamMarkExample {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("data.txt");
            BufferedInputStream bis = new BufferedInputStream(fis);

            // 使用mark()方法在流中标记一个位置
            bis.mark(1024);

            // 读取前10个字节的数据
            byte[] buffer = new byte[10];
            bis.read(buffer);
            String data = new String(buffer);
            System.out.println("前10个字节的数据:" + data);

            // 调用reset()方法回到mark标记的位置
            bis.reset();

            // 读取10到20个字节的数据
            bis.skip(10);
            bis.read(buffer);
            data = new String(buffer);
            System.out.println("第10到20个字节的数据:" + data);

            // 关闭流
            bis.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Dalam contoh di atas, kami mula-mula mencipta FileInputStream dan menghiasinya dengan BufferedInputStream untuk meningkatkan kecekapan. Kemudian, kami menggunakan kaedah mark() untuk menandakan kedudukan dalam strim, kemudian membaca 10 bait pertama data dan mencetaknya. Kemudian, kami memanggil kaedah reset() untuk kembali ke kedudukan tanda tanda, kemudian langkau 10 bait, baca 10 hingga 20 bait data sekali lagi dan cetaknya.

Melalui contoh ini, kita boleh melihat penggunaan kaedah mark() dan reset(). Mereka membantu kami semasa membaca data penstriman, menyimpan dan kembali ke lokasi tertentu supaya kami boleh membaca semula atau memproses data. Walau bagaimanapun, perlu diingatkan bahawa sebelum memanggil kaedah reset(), kita mesti memanggil kaedah mark() untuk menetapkan kedudukan tanda, dan nilai readLimit yang ditetapkan mestilah cukup besar untuk memastikan bait dibaca sebelum memanggil reset() kaedah Nombor tidak boleh melebihinya. Jika tidak, IOException akan dilemparkan.

Ringkasnya, kelas InputStream Java menyediakan kaedah mark() dan set semula(), yang boleh membantu kami menandakan kedudukan dalam strim dan kembali ke kedudukan ini untuk meneruskan membaca data apabila diperlukan. Ini sangat berguna dalam senario tertentu, seperti perlu membaca semula sekeping data tertentu atau memproses beberapa blok data tertentu. Kami boleh menggunakan kaedah ini secara munasabah mengikut keperluan sebenar untuk meningkatkan fleksibiliti dan kecekapan kod.

Atas ialah kandungan terperinci Java menggunakan fungsi mark() kelas InputStream untuk menandakan kedudukan dalam strim. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn