六、Java—IO流
1. File类的作用
File类对象可封装要操作的文件,可通过File类的对象对文件进行操作,如查看文件的大小、判断文件是否隐藏、判断文件是否可读等。
局限:File类的相关操作,并不涉及文件内容相关的操作,这是单独依靠File类对象无法实现的操作,此时需要借助I/O流完成。
2. I/O流的作用
生活案例来引入I/O流的作用
要将A桶里面的水导入到B桶中,中间可以利用一根水管。A桶中的水流向B桶,对于A桶来说,水流往外出,对于B桶来说,水流往里进。对于文件内容的操作同理。
将I/O流理解为一根“管子”,那么理解就会非常顺畅。I为Input,O为Output,I/O流即输入输出流,可以理解为两个流向的”管子“。
3. I/O流的分类
方式1:按照方向划分
输入流、输出流
方式2:按照处理单元划分
字节流、字符流
方式3:按照功能划分
节点流、处理流
4. I/O流的体系
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
访问字符串 | StringReader | StringWriter | ||
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
转换流 | InputStreamReader | OutputStreamWriter | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
FilterInputStream | FilterOutputStream | FilterReader | FilterWriter | |
打印流 | PrintStream | PrintWriter | ||
推回输入流 | PushbackInputStream | PushbackReader | ||
数据流 | DataInputStream | DataOutputStream |
输入字符流:
/*** 功能:读取文件的内容*/
public class Test {public static void main(String[] args) throws IOException {//对文件进行操作,必须将文件封装为具体的File类的对象:File f = new File("test.txt");//"管子"=流=输入字符输入流(将这个管子怼到文件上-管子和文件结合)FileReader fr = new FileReader(f);//开始动作-"吸"
// int n1 = fr.read();
// System.out.println(n1);
// int n2 = fr.read();
// System.out.println(n2);
// int n3 = fr.read();
// System.out.println(n3);
// int n4 = fr.read();
// System.out.println(n4);
// int n5 = fr.read();
// System.out.println(n5);
// int n6 = fr.read();
// System.out.println(n6);int n = fr.read();while (n!=-1){ //-1表示文件末尾,什么时候n的结果是-1那么循环就停止了System.out.println(n);n = fr.read();}//流关闭操作:fr.close();}
}
输出字符流:
/*** 功能:将程序中的内容输出到文件中去*/
public class Test02 {public static void main(String[] args) throws IOException {//程序中的字符串:String str = "efg你好";//文件:File f = new File("demo.txt");//字符输出流FileWriter fw = new FileWriter(f);//动作:输出:fw.write(str);//流关闭:fw.close();}
}