IO流:
根据流的方向 :
输入流,输出流
根据流操作的数据类型 :
字节流,字符流
字符流 : 字节流 + 编码表
IO流 –>Input(输入) Output(输出)流
设备间数据的传输都是通过IO流来实现的
IO流所设计到的流对象都是封装在IO包中
存储数据的设备 :
内存
文件
数据库
网络(云)
所有操作字节流的顶层
InputStream(输入流) OutputStream(输出流)
所有操作字符流的顶层
Reader(输入流) Writer(输出流)
字节流 : 操作所有文件(音视频,各种安装软件,游戏…)
字符流 : 操作纯文本类 型数据比字节流方便.
//重要快捷键: 整体抓异常 选中要抓的整体异常 ALT + Shift + z
//输出流 (写)
demo01
String count = "我爱你";
//FileWriter
//用来写入字符文件的便捷类。
FileWriter fw = new FileWriter("Demo1.txt");
//3.调用字符流的write方法将内容写出去
fw.write(count);
//将内容保存
fw.flush();
//关闭流
fw.close();
//输入流 (读)
demo02
FileReader fr = new FileReader("Demo.txt")
int len = 0;
//流缓冲区读取效率更
char[] arr = new char[1024];
//当整体字符全部读取完毕之后会返回一个-1所以可以当作循环停止的条件
while ((len = fr.read(arr))!=-1) {
System.out.println(new String(arr,0,len));
}
fr.close();
//将一个绝对路径里面的文件复制到别的位置
FileReader fr = new FileReader("D://asd//sign.txt");
FileWriter fw = new FileWriter("D://asd//sign2.txt");
// 创建一个字符串缓存区 来高效读取边读边写
char[] arr = new char[1024];
int len = 0; 初始化数据
/**
*循环读取当返回-1则表示没有数据了
*然后就是循环读取之后的写 fw.write()
*/
while ((len = fr.read(arr)) != -1) {
fw.write(arr, 0, len);
}
//应该先关闭(输出流)保证数据的完整 然后再关闭(输入流)
fw.close();
fr.close();