美文网首页Java工程师知识树
Java基础-IO流-文件内容读写

Java基础-IO流-文件内容读写

作者: HughJin | 来源:发表于2021-01-11 08:18 被阅读0次

Java工程师知识树 / Java基础


字节流与字符流操作文件的读写的方式

  • 字节流文件操作:主要用于读取图片,MP3,AVI视频等文件。
  • 字符流文件操作:主要用于读取处理纯文本数据。
  • 缓冲流操作文件的读取和写入
  • 使用nio读写文件

字节流操作文件的读取和写入:

字节流文件操作:主要用于读取图片,MP3,AVI视频等文件。
使用InputStream与OutputStream的子类实现为:FileInputStream与FileOutputStream。

字节流向文件中写入数据(字节流FileOutputStream )

public static void testFileOutputStream() {
    try (FileOutputStream fileOutputStream = new FileOutputStream("E:\\document\\io\\d.txt");
    ){

        String str = "FileOutputStream测试数据";
        fileOutputStream.write(str.getBytes());

        String str2 = "\r\n";
        fileOutputStream.write(str2.getBytes());

        String str3 = "FileOutputStream测试再次添加数据";
        fileOutputStream.write(str3.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

字节流从文件的读取(字节流FileInputStream)

//  read()
public static void testFileInputStream() {

    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read()
       int read1 =  fileOutputStream.read();
        System.out.println((char) read1);
       int read2 =  fileOutputStream.read();
        System.out.println((char) read2);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
// read(byte b[])  new String(arr)
public static void testFileInputStreamReadArr() {

    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read(byte b[])
        byte[] arr = new byte[2048];
        while ((fileOutputStream.read(arr)) != -1) {
            System.out.println(new String(arr));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}
// read(byte b[])  new String(arr,0,len)
public static void testFileInputStreamReadArrLength() {
    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read(byte b[])
        byte[] arr = new byte[2048];
        int len ;
        while (( len = fileOutputStream.read(arr)) != -1) {
            System.out.println(new String(arr,0,len));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

打印结果:

字符流操作文件的读取和写入:

字符流文件操作:主要用于读取处理纯文本数据。
使用Reader与Writer的子类实现为:FileReader与FileWriter

字符流向文件中写入数据(字符流FileWriter )

 public static void testFileWriter() {
    try (FileWriter fileWriter = new FileWriter("E:\\document\\io\\e.txt");
    ){

        String str = "FileWriter测试数据";
        fileWriter.write(str);

        String str2 = "\r\n";
        fileWriter.write(str2);

        String str3 = "FileWriter测试再次添加数据";
        fileWriter.write(str3);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

字符流从文件的读取(字符流FileReader)

// read()
public static void testFileReader() {

    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read()
       int read1 =  fileReader.read();
        System.out.println((char) read1);//F
       int read2 =  fileReader.read();
        System.out.println((char) read2);//i
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// read(char cbuf[])  new String(arr)
public static void testFileReaderArr() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read(byte b[])
        char[] arr = new char[2048];
        while ((fileReader.read(arr)) != -1) {
            System.out.println(new String(arr));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// read(char cbuf[])  new String(arr,0,len)
public static void testFileReaderArrLength() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read(byte b[])
        char[] arr = new char[2048];
        int len ;
        while (( len = fileReader.read(arr)) != -1) {
            System.out.println(new String(arr,0,len));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

打印结果:

缓冲流操作文件的读取和写入

BufferedOutputStream与BufferedInputStream组合写入与读取

步骤:1.FileOutputStream对象;2.new BufferedOutputStream(FileOutputStream对象)
BufferedOutputStream向文件中写数据

public static void testBufferedOutputStream() {
    try (FileOutputStream fw = new FileOutputStream("E:\\document\\io\\h.txt");
         BufferedOutputStream bis = new BufferedOutputStream(fw);
    ){
        bis.write("testByBufferedOutputStream测试文本".getBytes());
        bis.write("\r\n".getBytes());
        bis.write("testByBufferedOutputStream测试文本再添加".getBytes());
        bis.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

BufferedInputStream从文件中读取数据。
步骤:1.FileInputStream 对象;2.new BufferedInputStream(FileInputStream 对象)

public static void testBufferedInputStream() {
    try (FileInputStream fis = new FileInputStream("E:\\document\\io\\h.txt");
         BufferedInputStream bis = new BufferedInputStream(fis)
    ) {
        int len ;
        byte[] arr = new byte[1024];
        while ((len = bis.read(arr)) != -1) {
            System.out.println(new String(arr, 0, len));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
BufferedWriter与BufferedReader组合写入与读取

BufferedWriter向文件中写数据
步骤:1.FileWriter 对象;2.new BufferedWriter(FileWriter 对象)

public static void testByBufferedWriter() {
    try (FileWriter fw = new FileWriter("E:\\document\\io\\f.txt", true);
         BufferedWriter bw = new BufferedWriter(fw);
    ){
        bw.write("testByBufferedReader测试文本");
        bw.write("\r\n");
        bw.write("testByBufferedReader测试文本再添加");
        bw.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

BufferedReader从文件中读取数据。
步骤:1.FileReader 对象;2.new BufferedReader(FileReader 对象)

public static void testByBufferedReader() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\f.txt");
         BufferedReader bufferedReader = new BufferedReader(fileReader)
    ) {
        String read;
        while ((read = bufferedReader.readLine()) != null) {
            System.out.println(read);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

注:小文件推荐使用缓存输入输出流操作文件内容。大文件推荐使用NIO操作文件内容

相关文章

  • Java基础-IO流-文件内容读写

    Java工程师知识树[https://www.jianshu.com/p/db77d19a25f6] / Ja...

  • 【JavaSE(十三)】JavaIO流(中)

    1 IO流 1.1 IO流概述 Java中使用 IO流 来读取和写入,读写设备上的数据、硬盘文件、内存、键盘等等,...

  • 从源码设计角度理解Java IO

    概述 Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基...

  • Java 学习笔记(14)—— 文件操作

    java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java....

  • Java IO流读写文件

  • Java IO流 个人总结

    Java流类图结构 描述: Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。J...

  • Java(八)--文件I/O

    File类不包含读写文件内容的方法。封装了文件或者路径的属性。不包括创建文件和读写 import java.io....

  • Java基础之IO流

    ##Java基础之IO流IO流常用几个类的关系如下: 字节流 字节输入流FileInputStream 读取文件用...

  • Node基础

    Node基础 为什么学习Node? IO优势对于文件读写,Node采用的是非阻塞IO传统IO在读写文件的时候CPU...

  • Java File 文件操作

    java.io包里的类: InputStream/OutputStream : 以字节为单位读写文件内容,一次读/...

网友评论

    本文标题:Java基础-IO流-文件内容读写

    本文链接:https://www.haomeiwen.com/subject/arpgnktx.html