![339534a8c981b1a2aac5b21cbb25a01b.png](https://i-blog.csdnimg.cn/blog_migrate/f84c6509adb7838244e628b575e0795f.jpeg)
一、学习内容
1.Java文件读写
1) Java IO流类图
基于字节的I/O操作
![4373386ab9b4ae02383311a77d1576e5.png](https://i-blog.csdnimg.cn/blog_migrate/4920cfec93162370e867c2aed82f8ef2.jpeg)
![0562da39436487863370b3f7632f536e.png](https://i-blog.csdnimg.cn/blog_migrate/8a58cbdd7427fba85b0921c2de3ded96.jpeg)
基于字符的I/O操作
![e4e2996a0ab3672579695b694e3e3603.png](https://i-blog.csdnimg.cn/blog_migrate/a9834c2391bde098335b95aad772b3a8.jpeg)
![fb04d138db793e5b252ed62708643338.png](https://i-blog.csdnimg.cn/blog_migrate/cc428573e0d8bd8532c2b8232919d3a2.jpeg)
2) 文件读写的几种方式及简单示例
//几种读取文件的方式
//方式1
//读取文件 字节流
InputStream inputStream = new FileInputStream("f:zhangqiao1.txt");
//写入相应的文件
OutputStream outputStream = new FileOutputStream("f:zhangqiao2.txt");
//一次性取多少字节
byte[] bytes = new byte[2048];
//接受读取的内容
int n = -1;
//循环取出数据
while ((n = inputStream.read(bytes,0,bytes.length)) != -1){
String str = new String(bytes,0,n,"GBK");
System.out.println(str);
outputStream.write(bytes,0,n);
}
inputStream.close();
outputStream.close();
//方式2
//读取文件
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("f:zhangqiao1.txt"));
//写入相应的文件
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("f:zhangqiao2.txt"));
//读取数据
//一次性取出多少字节
byte[] bytes1 = new byte[2048];
//接受读取的内容
int n1 = -1;
//循环取出数据
while ((n1 = bufferedInputStream.read(bytes1,0,bytes1.length)) != -1){
//转换成字符串
String str1 = new String(bytes1,0,n1,"GBK");
System.out.println(str1);
bufferedOutputStream.write(bytes1,0,n1);
}
//清除缓存
bufferedOutputStream.flush();
//关闭流
bufferedInputStream.close();
bufferedOutputStream.close();
//方式3
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("f:zhangqiao1.txt"),"GBK");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("f:zhangqiao2.txt"),"GBK");
char[]