package day20;
import java.io.FileWriter;
import java.io.IOException;
/*
* 流(IO流):Input-OutputStream,作用:实现两个设备之间的数据传输
*
* 设备: 磁盘(硬盘),内存,键盘,文件,网络,控制台
* 网络:当前主机之外的网上资源
* 分类:
* 根据操作的方式:输入流和输出流
* 根据数据的类型:字节流和字符流
* 字节流:传输的是字节,可以操作任意类型的数据---音频,视频,文件,图片等
* 字符流:传输的是字节,不同点是在传输过程中加入了编码操作,让我们的操作更方便,只能操作文本
*
* 以内存为参考:
* 字节流:
* 字节输入流:InputStream
* 字节输出流:OutputStream
* 字符流的两个父类:
* 字符读入流(将数据读入内存):Reader
* 字符写出流(将字符从内存取出):Writer
*
*
* 实例:研究字符流
* 以磁盘的数据存储为例,将数据写入文件
* 分析:操作是文件,所以使用字符流
* 是将数据从内存放入磁盘所以是字符写出流
*/
public class Demo02 {
public static void main(String[] args) throws IOException {
// 1.创建FileWriter类的对象,并关联文件
/*
*
* 注意点:
* 1.关联文件的特点:如果之前不存在,程序会自动创建一个,如果存在,程序会直接使用,但是会将之前的文件内容覆盖
* 2.如果只写文件的名字,不写文件的路径,默认文件路径就是当前工程
* 3.我们可以自己指定路径但是一定要保证路径存在,否则会报异常
* 4.在执行write方法时,数据被临时放到流对象的内部数组中,而且这个数组是一个字节数组,会默认去查编码表
* 5.流对象使用完后一定要关闭
* 6.当流对象关闭之后,不能在进行操作,否则会报异常
*/
FileWriter fileWriter = new FileWriter("temp.txt");
// 2.调用写入方法
// 在执行write方法时,数据被临时放到流对象的内部数组中,而且这个数组是一个字节数组,会默认去查编码表
fileWriter.write("bingbingbang");
// 3.刷新--会将数组中的内容写入磁盘
//fileWriter.flush();
//4.关闭流---两个功能:1.关闭流 2.刷新
fileWriter.close();
}
}
实例:完成文件的复制
package day20;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 实例:完成文件的复制
*
* 相对路径:从路径中间的某个部位开始一直到当前的文件
* 绝对路径:一个文件的完整路径,从根目录开始到当前的文件
*
* 补充知识:
* \代表转义字符 \t制表符 \n换行符 \\:表示普通的反斜杠
* 在代表路径时,\\与/是一个意思
*/
public class Demo06 {
public static void main(String[] args) throws IOException {
FileReader fileReader = new FileReader("D:\\Eclipse\\EclipseWork\\BigDataFour\\src\\day20\\Demo04.java");
FileWriter fileWriter = new FileWriter("temp1.txt");
// 读写
int num;
while ((num = fileReader.read()) != -1) {
fileWriter.write(num);
}
fileReader.close();
fileWriter.close();
}
}