JAVAIO流总结01
File类
File类的一个对象,代表一个文件或者一个文件目录(文件夹)
Flie类涉及文件问价夹的创建、删除、重命名、修改时间、文件大小等方法(不涉及读写)
绝对路径相对路径
//idea使用Junit进行单元测试,相对路径为Module下 //使用main测试,相对路径为当前的project下 //eclipse无论测试方法还是main()都在project下
路径分隔符
windows和dos使用\
unix/
1、IO流分类
根据处理数据的数据类型的不同可以分为:
字节流(8bit)(抽象基类为InPutStream和OutPutStream)和字符流(16bit)(抽象基类为Reader和Writer)。
根据流向不同,可以分为:输入流和输出流。
根据角色的不同,可以分为节点流和处理流
字符流和字节流的主要区别:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
2、最基础的四种抽象类
//节点流(文件流)
//FileInputStream、FileOutputStream、FileReader、FileWriter
//缓冲流(处理流的一种)
//BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
@Test
public static void TetsFile() throws IOException {
//实例化File,指明操作文件
File file = new File("my.txt");
System.out.println(file.getAbsoluteFile());
//提供具体的流
FileReader fileReader = new FileReader(file); //节点流
//数据的读入
int read = fileReader.read();//如果读取到-1,已经读取到末尾
while (read!=-1){
System.out.println((char) read);
read = fileReader.read();
}
//流的关闭,物理链接需要手动关闭资源
fileReader.close();
}
@Test
public static void TetsFile(){
FileReader fileReader = null; //节点流
try {
//实例化File,指明操作文件
File file = new File("my.txt");
System.out.println(file.getAbsoluteFile());
//提供具体的流
fileReader = new FileReader(file);
//数据的读入
int read = fileReader.read();
while (read!=-1){
System.out.println((char) read);
read = fileReader.read();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fileReader!=null){
//流的关闭,物理链接需要手动关闭资源
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void test2() throws IOException {
File file = new File("my.txt");
FileReader reader = new FileReader(file);
//读取
char[] charbuffer = new char[5];
int len = reader.read(charbuffer);
while (len!=-1){
//遍历
for (int i = 0; i < len; i++) {
//不能够直接遍历数组,可能再次去到前一次保留的数据
System.out.print(charbuffer[i]);
}
//遍历
String str = new String(charbuffer,0,len);
len = reader.read(charbuffer);
}
reader.close();
}
public static void test3() throws IOException {
//写出,从内存写出文件
File outFile = new File("out.txt"); //输出可以不存在,存在默认会被覆盖
FileWriter fileWriter = new FileWriter(outFile,true); //追加
fileWriter.write("保存数据1");
fileWriter.write("\n");
fileWriter.write("保存数据2");
fileWriter.close();
}
public static void test4() throws IOException { File inFile = new File("my.txt"); File outFile = new File("out.txt"); FileReader fileReader = new FileReader(inFile); FileWriter fileWriter = new FileWriter(outFile); char[] charbuffer = new char[5]; int len = fileReader.read(charbuffer); while (len!=-1){ fileWriter.write(charbuffer,0,len); len = fileReader.read(charbuffer); } fileReader.close(); fileWriter.close(); }
public static void test5() throws IOException {
File inFile = new File("a.png");
File outFile = new File("b.png");
FileInputStream fileInputStream = new FileInputStream(inFile);
FileOutputStream fileOutputStream = new FileOutputStream(outFile);
byte[] charbuffer = new byte[20];
int len = fileInputStream.read(charbuffer);
while (len!=-1){
fileOutputStream.write(charbuffer,0,len);
len = fileInputStream.read(charbuffer);
}
fileInputStream.close();
fileOutputStream.close();
}