Heim > Java > JavaBase > Hauptteil

Wie lese ich Dateien in Java?

Freigeben: 2019-12-04 10:01:05
Original
4630 Leute haben es durchsucht

Wie lese ich Dateien in Java?

Es gibt viele Möglichkeiten, Dateien zu lesen, basierend auf der herkömmlichen Eingabestream-Methode oder der Nio-basierten Pufferobjekt- und Pipe-Lesemethode oder sogar einer sehr schnellen Speicherzuordnung zum Lesen von Dateien.

Vier Möglichkeiten, Dateien in Java zu lesen: (Empfohlen: Java-Video-Tutorial)

1. RandomAccessFile: Zufälliges Lesen, relativ langsam lesbarer beschreibbarer und bedienbarer Dateizeiger

2. FileInputStream: io-normaler Eingabestream-Modus, durchschnittliche Geschwindigkeit und Effizienz

3. Puffer-Puffer-Lesung: basierend auf nio-Puffer- und FileChannel-Lesung, schneller

4. Speicherzugeordnetes Lesen: basierend auf MappedByteBuffer, dem schnellsten

//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();
}
Nach dem Login kopieren

//使用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();
}
Nach dem Login kopieren

FielInputStream-Lesen

// 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();
}
Nach dem Login kopieren

Lesen von Pufferpufferobjekten

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 大文件读取
Nach dem Login kopieren

Lesen von Speicherkarten

rrreee

Für weitere Java-Kenntnisse beachten Sie bitteGrundlegendes Java-Tutorial Spalte.

Das obige ist der detaillierte Inhalt vonWie lese ich Dateien in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage