I/O全名:Input Output,输入输出的意思
•IO流用来处理设备之间的数据传输
•流操作分两种:字节流,字符流
•流按流向分为:输入流,输出流
•字节流的抽象积累
◦InputStream
◦OutputStream
•字符流的抽象基类
◦Reader
◦Writer
FileWriter
•需求:在硬盘上创建一个文件,并且写入数据
那我们怎么去做?他构造函数比较多的,我们看例子
public class HelloJJAVA {
public static void main(String[] args) {
/**
* 需求:在硬盘上创建一个文件,并且写入数据
*/
// 一被初始化就必须要有被操作的文件
// 如果不指定位置,就创建在同目录下
// 如果目录下存在同名文件,覆盖
try {
FileWriter fileWriter = new FileWriter("test.txt");
// 写入数据到内存
fileWriter.write("abcde");
// 刷新该流的缓冲
// fileWriter.flush();
// 关闭流 关闭之前会刷新,和flush的区别在于flush刷新后流可以继续工作
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这样在我们的项目根目录下就可以看到生成的文件了
文件续写
我们知道,文件存在的话就会覆盖,但是我们不想这样,我们想在原有的数据中续写,这该去怎么做?
public class HelloJJAVA {
public static void main(String[] args) {
try {
//参数2代表不覆盖已有的文件,支持续写
FileWriter fileWriter = new FileWriter("demo.txt",true);
fileWriter.write("你好");
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
构造传参的时候设置为true就可以续写文件了
FileReader
既然写已经会了,那我们就来读取了
public class HelloJJAVA {
public static void main(String[] args) {
try {
// 创建一个文件读取流对象,和指定名称的文件关联,保证文件存在,
// 如果不存在,异常
FileReader fileReader = new FileReader("demo.txt");
// 读取单个字符,自动往下读
int cd = fileReader.read();
System.out.println((char) cd);
//全部打印
int ch = 0;
while ((ch = fileReader.read()) != -1) {
System.out.println(ch);
}
fileReader.close();
} catc