字符流与字节流在Java IO中的应用与示例
版权申诉
97 浏览量
更新于2024-09-11
收藏 52KB PDF 举报
在Java编程中,输入/输出流(I/O Stream)是处理文件和其他数据源的重要工具。IO流主要分为两类:字符流和字节流,它们各自针对不同的数据类型和应用场景进行操作。
1. 字符流 (Character Streams)
- 适用于处理文本数据,特别是中文内容,因为字符流确保了文本的正确编码和读写。
- 读取 (Reading):
- 使用`FileReader`和`BufferedReader`组合。例如,以下代码展示了如何读取文本文件:
```
File file = new File("practice1.txt");
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(file);
br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
```
- 写入 (Writing):
- 使用`FileWriter`和`BufferedWriter`,如写入字符串到文件:
```
File file = new File("practice1.txt");
FileWriter fr = null;
BufferedWriter bw = null;
try {
fr = new FileWriter(file);
bw = new BufferedWriter(fr);
bw.write("hello,world!"); // 写入一行
bw.newLine(); // 插入换行符
bw.write("!Hello,World!"); // 写入另一行
bw.flush();
System.out.println("已结束");
} catch (FileNotFoundException e) {
// handle exception
} catch (IOException e) {
e.printStackTrace();
}
```
2. 字节流 (Byte Streams)
- 字节流主要用于处理二进制数据,如图片、视频等,以及处理非文本内容。
- 数据写出 (Writing):
- 常用`FileOutputStream`进行文件操作,如将字节数组写入:
```
File file = new File("image.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
byte[] bytes = ...; // 图片或视频的字节数组
fos.write(bytes);
} catch (FileNotFoundException e) {
// handle exception
} catch (IOException e) {
e.printStackTrace();
}
```
- 数据读入 (Reading):
- 使用`FileInputStream`配合`FileOutputStrea`m,如果数据以字节数组的形式存在,可以这样读取:
```
FileInputStream fis = null;
try {
fis = new FileInputStream("image.jpg");
byte[] bytes = new byte[(int) fis.available()];
fis.read(bytes);
// 处理字节数组
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
```
总结来说,字符流和字节流在Java I/O中扮演着至关重要的角色。字符流用于文本数据的处理,注重编码和格式,而字节流则处理原始二进制数据,如图片和视频。根据实际需求,选择合适的流类型,结合适当的异常处理,能够更有效地进行数据读写操作。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2016-10-28 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-12-21 上传
weixin_38515897
- 粉丝: 2
- 资源: 961
最新资源
- Essentials for KissAnime-crx插件
- 有冲突:R的替代冲突解决策略
- keegankresge.github.io
- napfinder-开源
- code-services-api:编码服务API规范
- nodejs-project
- 货币换算-crx插件
- vue+node全栈项目.zip
- cnode社区移动端开发.zip
- prettycode:语法在终端中突出显示R代码
- 参考资料-26房产估价案例分析总结记录.zip
- Can-Test-Program.rar_单片机开发_C/C++_
- flutter_login
- pyreadr:Python包,用于从熊猫数据帧读取R RData和Rds文件。 无需R或其他外部依赖项
- ts版本node项目.zip
- On10-TodasEmTech-MONITORIA-ProjetoI