读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和管道读取方式甚至非常快速的内存映射读取文件。
java中四种读取文件方式:(推荐:java视频教程)
1、RandomAccessFile:随机读取,比较慢优点就是该类可读可写可操作文件指针
2、FileInputStream:io普通输入流方式,速度效率一般
3、Buffer缓冲读取:基于nio Buffer和FileChannel读取,速度较快
4、内存映射读取:基于MappedByteBuffer,速度最快
RandomAccessFile读取
//RandomAccessFile类的核心在于其既能读又能写 public void useRandomAccessFileTest() throws Exception { RandomAccessFile randomAccessFile = new RandomAccessFile(new File("e:/nio/test.txt"), "r"); byte[] bytes = new byte[1024]; int len = 0; while ((len = randomAccessFile.read(bytes)) != -1) { System.out.println(new String(bytes, 0, len, "gbk")); } randomAccessFile.close(); }
FielInputStream读取
//使用FileInputStream文件输入流,比较中规中矩的一种方式,传统阻塞IO操作。 public void testFielInputStreamTest() throws Exception { FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt")); // 使用输入流读取文件,以下代码块几乎就是模板代码 byte[] bytes = new byte[1024]; int len = 0; while ((len = inputStream.read(bytes)) != -1) {// 如果有数据就一直读写,否则就退出循环体,关闭流资源。 System.out.println(new String(bytes, 0, len, "gbk")); } inputStream.close(); }
Buffer缓冲对象读取
// nio 读取 public void testBufferChannel() throws Exception { FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt")); FileChannel fileChannel = inputStream.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); // 以下代码也几乎是Buffer和Channle的标准读写操作。 while (true) { buffer.clear(); int result = fileChannel.read(buffer); buffer.flip(); if (result == -1) { break; } System.out.println(new String(buffer.array(), 0, result, "gbk")); } inputStream.close(); }
内存映射读取
public void testmappedByteBuffer() throws Exception { FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt")); FileOutputStream outputStream = new FileOutputStream(new File("e:/nio/testcopy.txt"),true); FileChannel inChannel = inputStream.getChannel(); FileChannel outChannel = outputStream.getChannel(); System.out.println(inChannel.size()); MappedByteBuffer mappedByteBuffer = inChannel.map(MapMode.READ_ONLY, 0, inChannel.size()); System.out.println(mappedByteBuffer.limit()); System.out.println(mappedByteBuffer.position()); mappedByteBuffer.flip(); outChannel.write(mappedByteBuffer); outChannel.close(); inChannel.close(); outputStream.close(); inputStream.close(); } //基于内存映射这种方式,这么写好像有问题。 MappedByteBuffer和RandomAcessFile这两个类要单独重点研究一下。 //TODO 大文件读取
更多java知识请关注java基础教程栏目。
Atas ialah kandungan terperinci java中如何读取文件?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Dreamweaver Mac版
Alat pembangunan web visual