Java ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pelbagai bidang seperti halaman web, aplikasi mudah alih dan Internet of Things Ia mempunyai ciri merentas platform yang sangat baik dan keupayaan pengendalian fail yang berkuasa. Artikel ini akan menumpukan pada operasi fail dalam Java.
Operasi fail merujuk kepada membaca, menulis, mencipta, memadam dan operasi lain yang berkaitan pada fail. Operasi fail dalam Java dilaksanakan terutamanya melalui perpustakaan Java IO Perpustakaan IO Java boleh dibahagikan kepada dua jenis: NIO dan IO Berikut akan memperkenalkan penggunaan kedua-dua perpustakaan ini.
1. Pustaka IO
Pustaka IO telah diperkenalkan dalam Java versi 1.0 Ia adalah satu set perpustakaan kelas yang digunakan untuk melaksanakan operasi input dan output dan menyediakan pelbagai operasi aliran (Stream). kita boleh membaca atau menulis fail melalui strim. Idea pengaturcaraan perpustakaan IO berorientasikan kepada aliran bait (dalam bait), iaitu, untuk sebarang jenis data, ia hanya boleh membaca dan menulis data bait.
Kelas Fail dalam perpustakaan Java IO mewakili fail atau direktori dalam sistem fail. Kami boleh melakukan operasi berkaitan fail melalui kelas Fail, seperti mencipta, memadam, menamakan semula fail, dsb.
1.1 Cipta fail atau direktori
Sepadan dengan fail baharu atau operasi direktori baharu dalam sistem fail, kita boleh menggunakan kaedah createNewFile() dan mkdir() atau mkdirs() dalam Kelas fail untuk mencipta fail atau direktori.
• kaedah createNewFile(): Mencipta fail baharu, tidak melakukan apa-apa jika fail itu wujud dan mengembalikan palsu.
Contoh kod berikut mencipta fail bernama "test.txt":
File file = new File("test.txt"); boolean result = file.createNewFile(); System.out.println(result);
• kaedah mkdir(): Mencipta direktori satu peringkat Jika direktori sudah wujud, tiada operasi dilakukan .
Contoh kod berikut mencipta direktori bernama "example":
File file = new File("example"); boolean result = file.mkdir(); System.out.println(result);
• kaedah mkdirs(): Mencipta direktori berbilang peringkat dan tidak melakukan apa-apa jika direktori itu sudah wujud.
Contoh kod berikut mencipta direktori yang dipanggil "example/child":
File file = new File("example/child"); boolean result = file.mkdirs(); System.out.println(result);
1.2 Memadam fail atau direktori
Sepadan dengan memadam fail atau direktori dalam sistem fail Untuk memadam direktori, kita boleh menggunakan kaedah delete() dalam kelas Fail untuk memadam fail atau direktori.
Contoh kod berikut memadamkan fail "test.txt":
File file = new File("test.txt"); boolean result = file.delete(); System.out.println(result);
1.3 Namakan Semula Fail atau Direktori
Sepadan dengan nama semula fail atau operasi direktori dalam sistem fail , kita boleh menggunakan kaedah renameTo() dalam kelas Fail.
Contoh kod berikut menamakan semula "test.txt" kepada "test1.txt":
File file = new File("test.txt"); File newFile = new File("test1.txt"); boolean result = file.renameTo(newFile); System.out.println(result);
Pustaka Java IO Menyediakan satu set kelas aliran bait dan aliran aksara yang kaya untuk membaca dan menulis fail.
Strim 2.1 Byte
Strim Byte mengendalikan data dalam bait Strim bait biasa termasuk FileInputStream, FileOutputStream, BufferedInputStream dan BufferedOutputStream.
• FileInputStream
FileInputStream ialah subkelas InputStream, yang digunakan untuk menukar data input kepada strim bait dan membaca kandungan fail. Kita boleh mencipta objek aliran input fail menggunakan pembina kelas FileInputStream.
Contoh kod berikut dilaksanakan menggunakan FileInputStream untuk membaca kandungan fail:
FileInputStream fis = new FileInputStream("test.txt"); int data; while ((data = fis.read()) != -1) { System.out.print((char) data); } fis.close();
• FileOutputStream
FileOutputStream ialah subkelas OutputStream, yang digunakan untuk menukar data output kepada strim bait dan menulis ke fail. Kita boleh mencipta objek aliran output fail menggunakan pembina kelas FileOutputStream.
Contoh kod berikut dilaksanakan menggunakan FileOutputStream untuk menulis rentetan pada fail:
String text = "Hello World!"; byte[] bytes = text.getBytes(); FileOutputStream fos = new FileOutputStream("test.txt"); fos.write(bytes); fos.close();
2.2 Strim aksara
Strim aksara mengendalikan data dalam unit aksara, strim aksara biasa Terdapat FileReader, FileWriter, BufferedReader dan BufferedWriter.
• FileReader
FileReader ialah subkelas Pembaca, yang digunakan untuk membaca strim aksara fail. Kita boleh mencipta objek aliran input fail menggunakan pembina kelas FileReader.
Contoh kod berikut dilaksanakan menggunakan FileReader untuk membaca kandungan fail:
FileReader fr = new FileReader("test.txt"); int data; while ((data = fr.read()) != -1) { System.out.print((char) data); } fr.close();
• FileWriter
FileWriter ialah subkelas Penulis, yang digunakan untuk menulis rentetan ke dalam fail itu. Kita boleh mencipta objek aliran keluaran fail menggunakan pembina kelas FileWriter.
Contoh kod berikut melaksanakan penulisan rentetan pada fail menggunakan FileWriter:
String text = "Hello World!"; FileWriter fw = new FileWriter("test.txt"); fw.write(text); fw.close();
2. Perpustakaan NIO
Pustaka NIO (Input/Output Baharu) adalah dalam Java 1.4 Diperkenalkan dalam versi, ia merupakan enkapsulasi lanjut pustaka Java IO, menyediakan mod operasi yang lebih fleksibel dan cekap, menyokong operasi IO tanpa sekatan, dan menyokong operasi baca dan tulis serentak. Berbanding dengan perpustakaan IO, idea pengaturcaraan perpustakaan NIO berorientasikan kepada kawasan penampan (ByteBuffer).
Operasi fail dalam pustaka NIO adalah serupa dengan yang terdapat dalam pustaka IO dan kelas Fail juga digunakan untuk operasi berkaitan fail. Perpustakaan NIO lebih cekap daripada perpustakaan IO, jadi ia lebih sesuai untuk memproses fail besar.
1.1 Cipta fail atau direktori
Sepadan dengan fail baharu atau operasi direktori baharu dalam sistem fail, kita boleh menggunakan kaedah createNewFile() dan mkdir() atau mkdirs() dalam Kelas fail untuk mencipta Fail atau direktori, kaedah operasi adalah sama dengan perpustakaan IO.
1.2 Memadam fail atau direktori
Sepadan dengan memadam fail atau memadam direktori dalam sistem fail, kami boleh menggunakan kaedah delete() dalam kelas Fail untuk memadamkan fail atau direktori adalah sama dengan perpustakaan IO.
1.3 Namakan semula fail atau direktori
Sepadan dengan nama semula fail atau operasi direktori dalam sistem fail, kita boleh menggunakan kaedah renameTo() dalam kelas Fail, dan kaedah operasi ialah sama seperti perpustakaan IO.
同样的,NIO库也提供了丰富的字节流和字符流类,用于进行文件的读写操作。
2.1 字节流
NIO库中的字节流类主要是基于通道和缓冲区(Buffer)的操作方式,常见的字节流类有FileChannel和ByteBuffer。
• FileChannel
FileChannel用于读写文件数据,它通常与ByteBuffer配合使用。我们可以使用FileChannel的open()方法创建文件通道。
下面的代码示例实现了使用FileChannel读取文件中的内容:
File file = new File("test.txt"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); FileChannel fc = raf.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); int data; while ((data = fc.read(buffer)) != -1) { buffer.flip(); while (buffer.hasRemaining()) { System.out.print((char) buffer.get()); } buffer.clear(); } fc.close(); raf.close();
• ByteBuffer
ByteBuffer提供了缓冲区,可用于读写文件数据。我们可以使用ByteBuffer的allocate()方法创建缓冲区。
下面的代码示例实现了使用ByteBuffer将字符串写入文件:
File file = new File("test.txt"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); FileChannel fc = raf.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); String text = "Hello World!"; buffer.put(text.getBytes()); buffer.flip(); fc.write(buffer); fc.close(); raf.close();
2.2 字符流
NIO库中的字符流类主要是基于通道和缓冲区(Buffer)的操作方式,常见的字符流类有FileChannel、Charset和CharBuffer。
• FileChannel与ByteBuffer
它的操作方式同字节流,只是在使用ByteBuffer的时候需要设置编码方式,如下:
File file = new File("test.txt"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); FileChannel fc = raf.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.put("Hello World!".getBytes("UTF-8")); buffer.flip(); CharBuffer charBuffer = Charset.forName("UTF-8").decode(buffer); System.out.println(charBuffer.toString()); fc.close(); raf.close();
这段代码利用ByteBuffer将字符串写入文件,再将其通过Charset进行解码,创建Java字符串并输出。
• CharBuffer
CharBuffer同ByteBuffer类似,提供了缓冲区,可用于读写文件数据。其用法同ByteBuffer。
File file = new File("test.txt"); RandomAccessFile raf = new RandomAccessFile(file, "rw"); FileChannel fc = raf.getChannel(); CharBuffer buffer = CharBuffer.allocate(1024); String text = "Hello World!"; buffer.put(text); buffer.flip(); fc.write(Charset.forName("UTF-8").encode(buffer)); fc.close(); raf.close();
这段代码利用CharBuffer将字符串写入文件。
总结
Java IO库和NIO库各有优缺点,IO库操作简单而且容易理解,但是在处理大文件时效率较低;而NIO库操作稍微复杂,但是在处理大文件时更为高效。开发者可以根据自己实际需求选择合适的库进行文件操作。
Atas ialah kandungan terperinci Operasi fail dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!