首页 > 代码库 > 6、I/O
6、I/O
一、File
1、File类的构造方法:
File(File parent, String child); // 根据父抽象路径和子路径创建文件对象 File(String pathname); // 指定文件路径创建文件对象 File file = new File("E:\\1.txt"); 并不是创建文件 File(String parent, String child) // 两部分构建
目录分隔符:Windows“\”(都可以使用,/只需要写一个),Linux是“/”,可以通过separator获取
2、常用方法:
1、创建
createNewFile();
(2)创建文件夹,只会创建最后一级文件夹,上级目录不存在就抛出异常
mkdir();
(3)创建多级文件夹,创建所有不存在的目录
mkdirs();
(4)目标文件与源文件是在同一目录下,就是重命名(文件和文件夹都行);不在则是剪切,而且不能操作文件夹
renameTo(File dest);
2、删除
(1)删除文件或文件夹
delete();
(2)JVM退出的时候删除文件,一般用于删除临时文件
deleteOnExit();
3、判断
(1)
exists();
(2)
isFile();
(3)
isDirectory();
(4)是否是隐藏文件或者隐藏目录
isHidden();
(5)
isAbsolute();
4、获取
(1)获取文件或文件夹名,不含上级路径
getName();
(2)返回绝对路径,也可以是相对路径,但是目录要指定
getPath();
(3)获取绝对路径,与文件存在没有关系
getAbsolutePath();
(4)获取文件大小,字节数
length();
(5)获取文件的父路径
getParent();
(6)最后一次修改时间
lastModified();
5、文件夹相关
(1)列出所有的根目录
listRoots();
(2)把当前文件夹下面的所有子文件名与子文件夹名(不包括孙)存储到一个String数组中返回
list();
(3)把当前文件夹下的所有子文件和子文件夹都使用一个File对象描述,然后把File对象存储到File数组中
listFiles();
(4)
list(FilenameFilter filter);
(5)自定义文件名过滤器
listFiles(FilenameFilter filter);
输入输出划分:
二、字节流
1、输入字节流:
注意:用缓冲数组读取效率更高
要是缓冲数组只有4时,每次读完数据第二次是覆盖到前面的数组
2、输出字节流
输出[-1, 0, 0, 0];255(11111111)以补码形式存在
拷贝图片
注意:每新创建一个FileOutputStream的时候,默认情况下FileOutputStream的指针指向文件开始位置,每写出一次指向都会相应移动(写的时候加不加true问题)
3、异常处理
4、缓冲输入字节流BufferedInputStream(其实跟自定义内存数组byte[] buf的原理一样,不常用 )
5、缓冲输出字节流BufferedOutputStream
bufferedInputStream.read()方法中,要是传入了buf缓冲数组返回值是存储到缓冲数组字节个数;要是没有传入,则返回的是读取到的内容
三、字符流
1、FileWriter输出字符流
写数据的时候,FileWriter内部维护了1024字节的数组,写数据的时候会先写到数组中,要写到硬盘上时,需要调用flush或者是close方法或者是填满内部字符数组
2、输出字符缓冲流(常用,比缓冲数组好,常用)BufferedReader
自定义BufferedReader的readLine方法
3、缓冲输出字符流(提高FileWriter的读写效率和扩展功能)(常用)
四、装饰者设计模式
6、I/O