编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Java字节流读写文件

由于计算机中的数据基本都保存在硬盘的文件中,因此操作文件中的数据是一种很常见的操作。在操作文件时,最常见的就是从文件中读取数据并将数据写入文件,即文件的读写。针对文件的读写,JDK 专门提供了两个类,分别是FileInputStream 和FileOutputStream。

FileInputStream 是InputStream 的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。由于从文件读取数据是重复的操作,因此需要通过循环语句来实现数据的持续读取。接下来通过一个案例来实现字节流对文件数据的读取,首先在D盘目录下创建一个文本文件IO.txt,在文件中输入内容“小海绵”,具体代码如例所示。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class IOTest {
    public static void main(String[] args) {
        try {
            // 创建一个文件字节输入流
            FileInputStream in = new FileInputStream("D:/IO.txt");
                int b = 0; // 定义一个int 类型的变量b,记住每次读取的一个字节
                while (true) {
                    b = in.read(); // 变量b 记住读取的一个字节
                    if (b == -1) { // 如果读取的字节为-1,跳出while 循环
                        break;
                    }
                    System.out.println(b); // 否则将b 写出
                }
                in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

208
161
186
163
195
224

例中,创建的字节流FileInputStream 通过read()方法将当前目录文件“D://IO.txt”中的数据读取并打印。通常情况下读取文件应该输出字符,之所以输出数字是因为硬盘上的文件是以字节的形式存在的,在“IO.txt”文件中,字符’小’,’海’,’绵’各占2个字节,因此,最终结果显示的就是文件中的六个字节所对应的十进制数。

与FileInputStream对应的是FileOutputStream。FileOutputStream 是OutputStream 的子类,它是操作文件的字节输出流,专门用于把数据写入文件。接下来通过一个案例来演示如何将数据写入文件,如例所示。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOTest {
    public static void main(String[] args) {
        try {
            // 创建一个文件字节输出流
            FileOutputStream out = new FileOutputStream("D:/example.txt");
            String str = "小海绵";
            byte[] b = str.getBytes();
            for (int i = 0; i < b.length; i++) {
                out.write(b[i]);
            }
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

程序运行后,会在D盘目录下生成一个新的文本文件example.txt,打开此文件,文件内容为小海绵。

通过运行结果可以看出,通过FileOutputStream 写数据时,自动创建了文件example.txt,并将数据写入文件。需要注意的是,如果是通过FileOutputStream 向一个已经存在的文件中写入数据,那么该文件中的数据首先会被清空,再写入新的数据。若希望在已存在的文件内容之后追加新内容,则可使用FileOutputStream 的构造函数FileOutputStream(StringfileName,booleanappend)来创建文件输出流对象,并把append参数的值设置为true。接下来通过一个案例来演示如何将数据追加到文件末尾,如例所示。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class IOTest {
    public static void main(String[] args) {
        try {
            OutputStream out = new FileOutputStream("D:/example.txt", true);
            String str = "炒鸡帅";
            byte[] b = str.getBytes();
            for (int i = 0; i < b.length; i++) {
                out.write(b[i]);
            }
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

查看D://example.txt文件,文件中的内容为 小海绵炒鸡帅。

未经允许不得转载: 技术文章 » Java编程 » Java字节流读写文件