Java函数中的文件输入输出(I/O)操作
Java是一种面向对象的编程语言,具有丰富的库和函数,支持各种输入输出(I/O)操作。这些操作可以访问文件系统和网络,并用于读取和写入文件、使用网络协议、进行网络通信等。在本文中,我们将介绍Java中的文件输入输出操作。
文件输入输出操作
Java中的文件I/O操作是通过InputStream和OutputStream类实现的。InputStream和OutputStream类是抽象类,不能被直接实例化。它们的派生类ByteBufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream、ObjectInputStream和ObjectOutputStream是可以直接使用的。
文件输入
Java中的文件输入是通过InputStream类实现的。InputStream类提供了读取单个字符、字节或字节数组的方法。在使用InputStream读取文件时,有三种不同的方式:文件字节流、文件字符流和文件缓存流。
1. 文件字节流
文件字节流用于读取二进制文件,如图片、MP3音频、视频等文件。在Java中,可以使用FileInputStream类创建文件字节流对象,并使用read()或read(byte[] b)方法从文件中读取数据。下面是一个使用FileInputStream读取文件的示例代码:
try (FileInputStream fileInputStream = new FileInputStream("file.txt")) {
int i;
while ((i = fileInputStream.read()) != -1) {
System.out.print((char) i);
}
}
catch (IOException e) {
System.err.println(e);
}
2. 文件字符流
文件字符流用于读取文本文件,如txt、Java、XML文件等。在Java中,可以使用FileReader类创建文件字符流对象,并使用read()或read(char[] cbuf)方法从文件中读取数据。下面是一个使用FileReader读取文件的示例代码:
try (FileReader fileReader = new FileReader("file.txt")) {
int i;
while ((i = fileReader.read()) != -1) {
System.out.print((char) i);
}
}
catch (IOException e) {
System.err.println(e);
}
3. 文件缓冲流
文件缓冲流用于读取文本和二进制文件,并且比原始文件I/O流的速度更快。在Java中,可以使用BufferedReader类和BufferedInputStream类创建文件缓冲流对象。下面是一个使用BufferedReader读取文件的示例代码:
try (BufferedReader bufferedReader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
}
catch (IOException e) {
System.err.println(e);
}
文件输出
Java中的文件输出是通过OutputStream类实现的。OutputStream类提供了写入单个字符、字节或字节数组的方法。在使用OutputStream写入文件时,有两种不同的方式:文件字节流和文件字符流。
1. 文件字节流
文件字节流用于写入二进制文件,如图片、MP3音频、视频等文件。在Java中,可以使用FileOutputStream类创建文件字节流对象,并使用write()或write(byte[] b)方法将数据写入文件。下面是一个使用FileOutputStream写入文件的示例代码:
try (FileOutputStream fileOutputStream = new FileOutputStream("file.txt")) {
String s = "Java FileOutputStream example";
byte[] bytes = s.getBytes();
fileOutputStream.write(bytes);
}
catch (IOException e) {
System.err.println(e);
}
2. 文件字符流
文件字符流用于写入文本文件,如txt、Java、XML文件等。在Java中,可以使用FileWriter类创建文件字符流对象,并使用write()或write(char[] cbuf)方法将数据写入文件。下面是一个使用FileWriter写入文件的示例代码:
try (FileWriter fileWriter = new FileWriter("file.txt")) {
String s = "Java FileWriter example";
fileWriter.write(s);
}
catch (IOException e) {
System.err.println(e);
}
总结
Java中的文件I/O操作是通过InputStream和OutputStream类实现的。InputStream和OutputStream类是抽象类,不能被直接实例化。它们的派生类ByteBufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream、ObjectInputStream和ObjectOutputStream是可以直接使用的。文件I/O操作分为文件输入和文件输出两种方式。文件输入通过InputStream类实现,可以使用FileInputStream类、FileReader类和BufferedReader类实现。文件输出通过OutputStream类实现,可以使用FileOutputStream类、FileWriter类实现。在处理文本文件时,应该使用字符流,处理二进制文件时应该使用字节流。
