IO流
1 概述
IO流的作用是实现两个设备之间数据的传递,设备包括磁盘(硬盘)、内存、键盘、文件、网络和控制台,其中网络表示当前主机之外的网上资源
2 分类
IO流根据操作的方式可以分为输入流和输出流,根据数据的类型可以分为字节流和字符流
2.1 字节流
1 概述
字节流传输的是字节,可以操作任意类型的数据,如音频、视频、文件、图片等
2 InputStream、OutputStream
2.2 字符流
1 概述
字符流传输的是字节,不同点是在传输过程中加入了编码的操作,可以更方便的操作文本
2 Reader、Writer
3 FileWriter
3.1 FileWriter练习
package hope;
import java.io.*;
public class _FileWriter {
public static void main(String args[]) throws IOException {
//1. 创建FileWriter对象并关联相应文件
FileWriter fileWriter = new FileWriter("test1.txt");
//2. 写
fileWriter.write("Hello World! Hello Hope!");
//3. 刷新
fileWriter.flush();
//4. 关闭流(关闭&刷新)
fileWriter.close();
}
}
注意点:
(1)创建对象时,如果只写了文件的名字,没有写具体路径,则默认路径时当前的工程
(2)创建对象时,如果关联的文件已经存在,则覆盖掉源文件,如果不存在,则程序会自动创建要给新的
(3)创建对象时,如果指定的路径并不是真实存在的,则会报异常(FileNotFoundException),表示系统找不到指定路径
(4)执行write方法时,数据临时存放到流对象的内部字节数组中,会默认去查编码表
(5)刷新时,会将临时字节数组中的数据放入磁盘
(6)关闭流时,不仅关闭流,并且会进行刷新操作
(7)如果关闭流之后,在进行写操作,会报异常(Stream closed)
3.2 FileWriter-文件续写
package hope;
import java.io.*;
/**
*
* 文件的读写:FiileWriter(String file, boolean value)
*当value位是true时,表示不会将原来的内容覆盖掉,会接着写
*/
public class _FileWriter_02 {
public static void main(String args[]) throws IOException{
//1. 创建
FileWriter fileWriter = new FileWriter("test1.txt", true);
//2. 写
fileWriter.write("Hello World!\n");
//3. 刷新
fileWriter.flush();
//4. 关闭
fileWriter.close();
}
}
4 FileReader
4.1 FileReader练习—从文件中读取数据,打印到控制台
package _FileReader;
import java.io.*;
/**
*
* 读内容-FileReader
* 实例:从文件中读取内容并显示在控制台
*
*/
public class _FileReader_01 {
public static void main(String args[]) {
test01("test1.txt");
test02("test1.txt");
}
//read();//一个字符一个字符的读,每次输出一个字符
public static void test01(String path) {
try {
FileReader fileReader = new FileReader(path);
int num = 0;
//num = fileReader.read();//返回的是ASCII码值
while((num = fileReader.read()) != -1) {
System.out.print((char)num);
}
fileReader.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
//read(数组);//每次读出多个字符(剩余数组长度 == 数组长度? “数组长度”:“剩余数组长度”)
//数组负责临时存放数据,一般这个数组的大小<=!kB
//返回值表示本次读到的真实字符个数,如果返回值是-1,则表示已读完
public static void test02(String path) {
try {
FileReader fileReader = new FileReader(path);
char[] arr = new char[4];
int num = 0;
while((num = fileReader.read(arr)) != -1) {
//System.out.println(new String(arr, 0, num) + " " + num);
System.out.print(new String(arr, 0, num));
}
fileReader.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}