JAVA学习-IO.流
Java IO流是Java中处理输入输出的机制,它提供了一种处理文件、网络等输入输出操作的方式。IO流主要分为输入流和输出流,根据数据的不同类型,又可以细分为字节流和字符流。
一、常见的IO流包括:
1. 字节流(Byte Stream):
以字节为单位进行读写的流,在处理二进制文件(如图片、视频等)时常用。
- InputStream:
字节输入流,用于从文件或其他数据源读取字节数据。常用的子类有FileInputStream、ByteArrayInputStream等。
- OutputStream:
字节输出流,用于向文件或其他数据源写入字节数据。常用的子类有FileOutputStream、ByteArrayOutputStream等。
2. 字符流(Character Stream):
以字符为单位进行读写的流,在处理文本文件时常用。
- Reader:
字符输入流,用于从文件或其他数据源读取字符数据。常用的子类有FileReader、InputStreamReader等。
- Writer:
字符输出流,用于向文件或其他数据源写入字符数据。常用的子类有FileWriter、OutputStreamWriter等。
二、IO流的特点包括:
- 字节流和字符流:
字节流适用于处理二进制数据,字符流适用于处理文本数据,字符流会对字节进行编码和解码。
- 阻塞和非阻塞:
阻塞IO会在读写数据时阻塞当前线程,直到读写完成,而非阻塞IO可以在读写时不立即返回,而是通过轮询方式检查是否有数据可读写。
- 缓冲区:
IO流通常会使用缓冲区来提高读写的效率,缓冲区在内存中创建一个数组,读写数据时先将数据存放到缓冲区,然后再读写到目标文件或数据源。
- 自动关闭:
Java 7中引入了try-with-resources语句,可以在使用完IO流后自动关闭,无需手动调用close方法。
以下是一个使用字符流读写文件的示例代码:
import java.io.*;
public class FileReadWriteExample {
public static void main(String[] args) {
try {
// 创建字符输入流
FileReader reader = new FileReader("input.txt");
// 创建字符输出流
FileWriter writer = new FileWriter("output.txt");
// 读取文件内容并写入到另一个文件
int ch;
while ((ch = reader.read()) != -1) {
writer.write(ch);
}
// 关闭流
reader.close();
writer.close();
System.out.println("文件读写完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
该代码通过字符流读取input.txt文件的内容,并将内容写入到output.txt文件中。最后,关闭流并提示读写完成。
三、相比于其他编程语言
Java IO流提供了比较丰富的功能和灵活的使用方式。在高级应用中,可以使用一些包装类对流进行装饰,以增加功能或提供更高级别的操作。例如,使用BufferedReader对字符输入流进行包装,可以提供缓冲读取和按行读取的功能;使用ObjectInputStream对字节输入流进行包装,可以实现对象的序列化和反序列化。
四、总结:
Java IO流提供了一种方便、灵活的方式来处理输入输出操作。通过选择合适的流类型和使用相关方法,可以有效地读取和写入文件或其他数据源。在高级应用中,可以使用装饰器模式对流进行功能增强。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)
原文地址:https://blog.csdn.net/weixin_69763181/article/details/136526653
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!