一、IO流要明确的几点
(1)明确要操作的数据是数据源还是数据目的(是读还是写)
源/读
InputStream Reader
目的/写
OutputStream Writer
(2)明确操作设备上的数据是字节还是文本
源/读
字节:InputStream
文本:Reader
目的/写
字节:OutputStream
文本:Writer
(3)明确数据所在具体地点
设备:
硬盘:文件File开头
内存:数组、字符串
硬盘:System.in
网络:Socket
对应目的地的设备
硬盘:文件File开头
内存:数组、字符串
硬盘:System.out
网络:Socket
(4)明确是否需要额外功能
需要转换——转换流 InputStreamReader、OutputStreamWtiter
需要高效率——缓冲流 Bufferedxxx
对象序列化——ObjectInputStream、ObjectOutputStream
IO流主要分类:
二、File概述
至于IO流,也就是输入输出流,从文件出发到文件结束,至始至终都离不开文件,所以IO流先从文件File类讲起。
File跟流无关,File类不能对文件进行读和写也就是输入和输出!
File主要表示类似D:\\文件目录1
与D:\\文件目录1\\文件.txt
,前者是文件夹(Directory)后者则是文件(file),而File类就是操作这两者的类。
2.1 常用方法(建议熟记)
绝对路径:一个完整的路径,以盘符开头,例如 F://Java//aaa//b.txt。也可以用单斜杠 /
相对路径:一个简化的路径,不以盘符开头,例如 //aaa//b.txt。也可以用单斜杠 /
以上方方法测试,代码如下【注意测试以自己的电脑文件夹为准】:
public class Test {
public void creat(File file)throws Exception{
if (!file.exists());//判断文件是否存在
file.createNewFile();//创建新的文件
}
public void show(File file){
if (file.exists()){//如果文件存在
if (file.isFile()){//如果是文件 输出文件信息
System.out.println("文件名称:"+file.getName());//文件名
//文件绝对路径
System.out.println("文件绝对路径:"+file.getAbsolutePath());
System.out.println("文件相对路径:"+file.getPath());
//相对路径
System.out.println("文件大小:"+file.length());//文件字节大小
}if (file.isDirectory()){//测试文件是否是目录
System.out.print