欢迎访问宙启技术站
智能推送

Java中IO流函数的使用说明

发布时间:2023-06-13 15:47:15

Java中的IO流函数可以让程序读取和写入不同类型的数据,如文件、网络连接、内存缓存等。在Java中,IO流分为输入流和输出流。输入流用于读取数据,而输出流用于写入数据。本文将对Java中的IO流函数的使用进行详细的说明。

一、Java IO流的分类

1.字节流:字节流按照数据传输方式分为输入流和输出流,按照数据传输来源分为节点流和处理流。

(1)字节输入流

1)节点流:FileInputStream可以从文件读取数据。

FileInputStream fileInputStream = new FileInputStream("temp.txt");

2)处理流:InputStreamReader可以从InputStream读取数据,它接收字节流并根据编码类型将其转换为字符流。

FileInputStream fileInputStream = new FileInputStream("temp.txt");

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");

(2)字节输出流

1)节点流:FileOutputStream可以向文件写入数据。

FileOutputStream fileOutputStream = new FileOutputStream("temp.txt");

2)处理流:OutputStreamWriter可以向OutputStream写入数据,它接收字符流并根据编码类型将其转换为字节流。

FileOutputStream fileOutputStream = new FileOutputStream("temp.txt");

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");

2.字符流:字符流按照数据传输方式分为输入流和输出流,按照数据传输来源分为节点流和处理流。

(1)字符输入流

1)节点流:FileReader可以从文件读取数据。

FileReader fileReader = new FileReader("temp.txt");

2)处理流:InputStreamReader可以从InputStream读取数据,它接收字节流并根据编码类型将其转换为字符流。

FileInputStream fileInputStream = new FileInputStream("temp.txt");

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"UTF-8");

(2)字符输出流

1)节点流:FileWriter可以向文件写入数据。

FileWriter fileWriter = new FileWriter("temp.txt");

2)处理流:OutputStreamWriter可以向OutputStream写入数据,它接收字符流并根据编码类型将其转换为字节流。

FileOutputStream fileOutputStream = new FileOutputStream("temp.txt");

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");

二、Java IO流的基本操作

1.数据的读取

用InputStream或Reader的read方法读取,可以读取单个字节或字符,也可以读取一定长度的字节或字符,返回值为int类型,读取到末尾返回-1.

//读取单个字节

InputStream inputStream = new FileInputStream("temp.txt");

int i;

while ((i = inputStream.read()) != -1) {          

    System.out.print((char) i);

}

//读取指定长度的字节数组

InputStream inputStream = new FileInputStream("temp.txt");

byte[] b = new byte[1024];

int len;

while ((len = inputStream.read(b)) != -1) {

    System.out.print(new String(b, 0, len));

}

2.数据的写入

用OutputStream或Writer的write方法可以写入单个字节或字符,也可以写入一定长度的字节或字符。

//写入单个字节

OutputStream outputStream = new FileOutputStream("temp.txt");

outputStream.write('H');

outputStream.write('e');

outputStream.write('l');

outputStream.write('l');

outputStream.write('o');

//写入指定长度的字节数组

OutputStream outputStream = new FileOutputStream("temp.txt");

byte[] b = "Hello World".getBytes();

outputStream.write(b);

3.关闭流

Java中的流是一种资源,需要使用完毕后显式关闭才能释放资源。Java中可以使用try-with-resource的语法自动关闭流,也可以使用finally语法显式关闭流。

//try-with-resource语法

try (FileInputStream fileInputStream = new FileInputStream("temp.txt")) {

    //读取数据或者其他操作

} catch (Exception e) {

    e.printStackTrace();

}

//finally语法

FileInputStream fileInputStream = null;

try {

    fileInputStream = new FileInputStream("temp.txt");

    //读取数据或者其他操作

} catch (Exception e) {

    e.printStackTrace();

} finally {

    if (fileInputStream != null) {

        try {

            fileInputStream.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

三、Java IO流的高级操作

1.字符编码

Java中的字符编码有很多种,最常用的是UTF-8和GBK。在使用字符流处理数据时,一定要确定文件的编码格式,否则会出现乱码的情况。可以使用InputStreamReader和OutputStreamWriter的构造方法来指定编码格式。

FileInputStream fileInputStream = new FileInputStream("temp.txt");

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");

2.IO流缓存

Java提供了缓存流来提高IO流的读写效率,包括BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter等。

//BufferedInputStream

FileInputStream fileInputStream = new FileInputStream("temp.txt");

BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

byte[] b = new byte[1024];

int len;

while ((len = bufferedInputStream.read(b)) != -1) {

    System.out.write(b, 0, len);

}

//BufferedWriter

FileWriter fileWriter = new FileWriter("temp.txt");

BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

bufferedWriter.write("Hello World");

bufferedWriter.newLine(); //换行

bufferedWriter.write("Java IO流");

3.字节流和字符流之间的转换

Java中可以通过InputStreamWriter和OutputStreamWriter将字节流转换成字符流,也可以通过InputStreamReader和OutputStreamWriter将字符流转换成字节流,从而实现不同类型数据的读取和写入。

FileOutputStream fileOutputStream = new FileOutputStream("temp.txt");

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");

outputStreamWriter.write("Hello World");

FileInputStream fileInputStream = new FileInputStream("temp.txt");

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");

char[] c = new char[1024];

int len;

while ((len = inputStreamReader.read(c)) != -1) {

    System.out.print(new String(c, 0, len));

}

总结:

Java中,IO流是非常重要的一部分,可以通过它来读写不同类型的数据。在使用IO流时,需要注意数据类型的匹配、缓存的使用以及流的关闭。以上内容是对Java中IO流函数的简单介绍,希望能够对读者有所帮助。