Java - Java IO 简介
Posted xy14
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - Java IO 简介相关的知识,希望对你有一定的参考价值。
1. 概述
- 面试偶尔会问到让你写 文件读写 的面试官
- 我搞不懂为啥必须会这玩意
- 面试官的意思是, 这玩意只要是个开发就得会
- 当然我现在又不是开发
2. 环境
- 语言
- java 1.8
3. 准备
- 概述
- 基本概念
- 场景
- 一次读一行
- 读取指定编码
- 文件(File 对象)
- 概述
- 读写的目标
- 其他
- 要读的文件, 需要存在
- 通常不要针对同一个文件做读写
- 注意目录的 权限
- 概述
- 输入
- 概述
- 就是读
- 多层嵌套
- FileInputStream
- 概述
- 文件输入流
- 需要 文件对象 来确定输入
- 概述
- InputStreamReader
- 概述
- 重要参数
- 编码
- 重要参数
- 概述
- BufferedReader
- 概述
- 缓存读取效率较高
- 可以使用 readline 方法读取一行
- 概述
- 概述
- 输出
- 概述
- 写文件
- 也是多层嵌套
- FileOutputStream
- 概述
- 文件输出流
- 需要 文件对象
- 概述
OutputStreamWriter
1. 概述
1. 确定编码BufferedWriter
1. 概述
1. 可以缓存写
- 概述
4. 示例代码
// 注意: 这里只给出思路, 文件类, 输入输出流可能会遇到异常, 需要 try catch 或者 throws, 并且这些东西, 最好在 finally 里清空和关闭
// 声明变量: 读
// inputPath 是 String 类型的变量, 记录着 输入文件 在文件系统里的位置
File inputFile = new File(inputPath);
FileInputStream fis = new FileInputStream(inputFile);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(fis);
// 下面是简化版本
// BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inputFile),"UTF-8"));
// 如果不需要调整编码, 也可以这么写
// BufferedReader br = new BufferedReader(new FileReader(inputFile)));
// 声明变量: 写
File outputFile = new File(outputPath);
FileOutputStream fos = new FileOutputStream(outputFile);
OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(fos);
// 下面是简化版本
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile),"UTF-8"));
// 如果不需要调整编码, 也可以这么写
// BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile)));
//读取数据
//循环取出数据
String str = null;
while ((str = br.readLine()) != null)
System.out.println(str);
//写入相关文件
bw.write(str);
bw.newLine();
//清楚缓存
bw.flush();
//关闭流
br.close();
bw.close();
4. 其他
- ref
- 写的很清晰, 很详细
https://www.cnblogs.com/ll409546297/p/7197911.html
- 其他的读写场景
- 不需要关注编码的读写
- 每次读写固定 字符/字节 的场景
- randomaccessfile 场景
- 关于 Java 的 IO
- 这种管道套管道的方法, 真的让人难受
- 有空可以了解下 python 的 io, 简单的令人窒息
- 最后的 shutdown 处理
- bw 需要一波输出
- 可能会有剩余内容
- 流的关闭
- 只用关闭最顶层的对象即可
- 下面的会自己关闭
- 只用关闭最顶层的对象即可
- bw 需要一波输出
以上是关于Java - Java IO 简介的主要内容,如果未能解决你的问题,请参考以下文章