Java IO学习和总结
Java IO(Input/Output)是Java提供的一套用于处理输入输出操作的API,它使得程序可以通过不同的方式来读写数据,包括文件、网络、内存等。Java IO体系庞大且功能丰富,分为两大类:字节流和字符流。
1. 字节流和字符流
字节流用于处理原始的二进制数据,而字符流则是用于处理字符数据(如文本文件)。Java中的字节流类以InputStream
和OutputStream
为基类,再通过这些基类派生出具体的字节流类;字符流类则以Reader
和Writer
为基类。
- 字节流
InputStream
-
OutputStream
-
字符流
Reader
Writer
2. 字节流的使用
字节流主要用于处理图像、音频、视频等二进制文件。以下是一个字节流读取文件的简单示例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamExample {
public static void main(String[] args) {
String sourceFile = "source.txt";
String destinationFile = "destination.txt";
// 字节输入流
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(destinationFile)) {
int byteData;
while ((byteData = fis.read()) != -1) {
fos.write(byteData);
}
System.out.println("文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上述代码中,我们首先创建了一个FileInputStream
对象用于读取源文件,然后使用FileOutputStream
对象将数据写入目标文件。通过read()
方法读取字节直到文件结束(返回-1),并用write()
方法写入新的文件。
3. 字符流的使用
字符流主要用于处理文本数据。以下是一个字符流读取文件的示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamExample {
public static void main(String[] args) {
String sourceFile = "source.txt";
String destinationFile = "destination.txt";
// 字符输入流
try (BufferedReader br = new BufferedReader(new FileReader(sourceFile));
FileWriter fw = new FileWriter(destinationFile)) {
String line;
while ((line = br.readLine()) != null) {
fw.write(line + System.lineSeparator());
}
System.out.println("文本文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在此示例中,BufferedReader
给我们提供了有效的文本读取功能,而FileWriter
用于写入字符串。我们使用readLine()
方法逐行读取文本,直至文件结束。
4. IO异常处理
在Java IO中,异常处理非常重要,因为文件操作可能会出现许多问题,如文件不存在、没有读写权限、磁盘满等。推荐使用try-with-resources
语句自动关闭流,以防资源泄露。
5. 总结
Java IO是一项强大的技术,使得处理数据变得更为简单和高效。通过字节流和字符流,我们可以轻松地处理各种类型的数据。学习Java IO不仅帮助我们在文件操作上得心应手,也为进一步的网络编程和数据处理奠定了基础。掌握这些基本概念和技术,将使我们能够更好地应对实际开发中的各种需求。