Java输入/输出流体系详解
引言
Java的输入/输出流是Java程序中使用频率很高的部分,从文件IO到网络IO,从字节流到字符流,从节点流到处理流,Java的IO体系都非常的强大和灵活。许多初学者在学习Java IO时经常会对Java IO体系的各个部分感到困惑和无从下手。本篇攻略就是希望能够帮助读者理解Java IO体系的各个方面,掌握Java输入/输出流的使用方法,提高Java IO编程技术。
Java输入/输出流体系的概念
Java输入/输出流是指在Java程序中用来实现数据输入和输出的一类类库,主要用于读写磁盘文件、内存缓冲区、网络协议等操作。Java的输入/输出流主要分为两类:
- 输入流:从数据源(文件、网络等)中读取数据
- 输出流:向目的地(文件、网络等)中输出数据
Java的输入/输出流主要分为两种:
- 字节流: 以字节为单位。
字节流的输入输出类分别为InputStream和OutputStream,InputStream是字节输入流的抽象类,OutputStream是字节输出流的抽象类。
- 字符流: 主要针对处理中文字符等数据的输入输出。
字符流的输入输出类分别为Reader和Writer,Reader是字符输入流的抽象类,Writer是字符输出流的抽象类。
除了字节流和字符流之外,Java IO体系中还分为系统资源IO、文件IO、网络IO、对象IO和线程IO。总体来说,Java输入/输出流体系中比较重要的一些类为File、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、InputStreamReader、OutputStreamWriter、BufferedReader和PrintWriter等。了解这些类可以为后续的学习打下很好的基础。
Java输入/输出流体系的使用
Java输入/输出流的使用大致可以分为以下步骤:
1. 打开数据源(文件、网络等)
在Java IO体系中,打开数据来源通常是通过创建相应的Java输入/输出流对象来实现的。
// 读取文件
FileInputStream fis = new FileInputStream("filename");
// 写入文件
FileOutputStream fos = new FileOutputStream("filename");
2. 读取/写入数据
通过Java输入/输出流提供的方法来进行数据的读取/写入。
例如,使用字节输入流读取文件内容:
FileInputStream fis = new FileInputStream("filename");
int data = fis.read();
while (data != -1) {
data = fis.read();
}
使用字符输入流读取文件内容:
FileReader fr = new FileReader("filename");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
line = br.readLine();
}
使用字节输出流向文件中写入内容:
FileOutputStream fos = new FileOutputStream("filename");
String str = "Hello, World!";
byte[] bytes = str.getBytes();
fos.write(bytes);
使用字符输出流向文件中写入内容:
FileWriter fw = new FileWriter("filename");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Hello, World!");
bw.newLine();
bw.write("This is a sample text.");
bw.flush();
3. 关闭输入/输出流
在读取/写入数据后,需要注意关闭输入/输出流来释放资源。Java提供的输入/输出流都实现了Closeable接口。
例如,在使用字符输入流和缓冲区类BufferedReader读取文件后,需要关闭输入流和缓冲区。
FileReader fr = new FileReader("filename");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
line = br.readLine();
}
br.close();
fr.close();
示例1:读取文件并输出到控制台
下面是一个读取文件并将其内容输出到控制台的示例。
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
try {
// 打开文件
FileInputStream fis = new FileInputStream("filename.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
InputStreamReader isr = new InputStreamReader(bis);
BufferedReader br = new BufferedReader(isr);
// 读取文件内容
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
// 关闭流
br.close();
isr.close();
bis.close();
fis.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
示例2:向文件中写入内容
下面是一个向文件中写入内容的示例。
import java.io.*;
public class WriteToFile {
public static void main(String[] args) {
try {
String str = "Hello, World!";
// 打开文件
FileOutputStream fos = new FileOutputStream("filename.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
OutputStreamWriter osw = new OutputStreamWriter(bos);
BufferedWriter bw = new BufferedWriter(osw);
// 写入文件
bw.write(str);
bw.flush();
// 关闭流
bw.close();
osw.close();
bos.close();
fos.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
结论
Java输入/输出流体系是Java程序中较为重要的部分,本篇攻略详细介绍了Java输入/输出流的概念、使用方法以及常用类的使用。通过学习本篇攻略所提供的知识点,读者可以掌握Java输入/输出流的操作技巧,为后续的学习打下坚实的基础。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java输入/输出流体系详解 - Python技术站