Java 基础教学:Java 高级特性与实战-输入输出流
Java I/O(输入输出)流是用于处理输入和输出的类的集合,它们在java.io
包中。I/O流分为两大类:字节流(用于处理原始二进制数据)和字符流(用于处理文本数据)。
字节流与字符流的区别
字节流
- 字节流以8位字节为单位进行输入和输出,是所有类型数据(包括文本文件、音频、视频等)的通用流类。
- 字节流主要用于处理非文本数据,如二进制文件和对象序列化等。
- 在
java.io
包中,InputStream
和OutputStream
是所有字节流类的基类。
字符流
- 字符流以16位Unicode字符为单位进行输入和输出,专门用于处理文本数据。
- 字符流自动处理字符编码问题,可以避免在字节和字符之间转换时出现的字符集错误。
- 在
java.io
包中,Reader
和Writer
是所有字符流类的基类。
文件的读写操作
文件读取
字节流读取
使用FileInputStream
可以读取文件的字节数据。
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int i;
while ((i = fis.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流读取
使用FileReader
可以读取文件的字符数据。
import java.io.FileReader;
import java.io.IOException;
public class CharStreamReadExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("example.txt")) {
int i;
while ((i = fr.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件写入
字节流写入
使用FileOutputStream
可以写入字节数据到文件。
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamWriteExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
fos.write(data.getBytes()); // 将字符串转换为字节数据并写入
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流写入
使用FileWriter
可以写入字符数据到文件。
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamWriteExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileWriter fw = new FileWriter("example.txt")) {
fw.write(data); // 直接写入字符串
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结
字节流和字符流是Java I/O流的两种基本形式,它们分别以字节和字符为单位进行数据的读取和写入。字节流主要用于处理原始二进制数据,而字符流主要用于处理文本数据。在进行文件读写操作时,应根据数据的类型选择合适的流类。正确地使用I/O流可以帮助我们高效地进行数据的输入和输出操作。
原文地址:https://blog.csdn.net/ZTAHNG/article/details/143597989
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!