------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a
href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1、File类获取方法
通过操作系统中的路径,进行获取
1. String getName()
获取的是File构造方法中的抽象路径的名字
new File("XXXXXX")
2. String getPath()
获取File构造方法中的路径,路径转成字符串
3. getParent(),getParentFile()
一组方法,功能完全一样
获取File构造方法中路径的父路径
区别:
getParent() 计算结果数据类型是String类型
结果只能执行String类方法
getParentFile()计算结果数据类型是File类型
结果可以执行File类方法
4. getAbsolutePath(),getAbsoluteFile()
一组方法,功能完全一样
获取File构造方法中的路径的绝对路径
区别
getAbsolutePath()计算结果,返回值是String类型
getAbsoluteFile()计算结果,返回值是File类型
5. long length()
获取File构造方法中封装的文件的字节数
6. long lastModified()
获取File构造方法中封装的文件的最后修改时间毫秒值
2、File类高级获取
1. static File[] listRoots()
获取当前操作系统中的根目录
Window就是盘符
2. String[] list()
获取File构造方法中路径的所有子路径和文件
结果存储字符串数组
new File ("c:").list()
3. File[] listFiles()
获取File构造方法中路径的所有子路径和文件
结果存储File类型对象的数组
new File("c:").listFiles()
区别:
list() 结果只有名字(目录名,文件名)
listFiles()结果是目录和文件的,全路径名
4. 文件获取过滤器
可以获取到需要的文件,不需要的文件直接过滤
listFiles(FileFilter filter)方法重载形式
传递过滤器对象
FileFilter接口,文件过滤器接口,这个接口的实现类对象
可以传递给listFiles方法
listFiles(FileFilter实现类对象)
接口抽象方法
public boolean accept(File pathname);
定义接口实现类,重写抽象方法
程序Demo:自定义文件后缀名筛选器
3、方法递归
1. 递归: 方法自己调用自己, 递归调用
不是java技术,所有的编码语言,都可以使用
递归是一种编程技巧
2. 递归注意事项
A. 递归必须有出口,否则就是死递归
B. 递归次数不能太多,否则导致内存溢出 10000次基本没有问题
C. 构造方法,不能递归
3. 程序Demo 删除文件夹
4、IO流对象概述
IO流实现设备之间数据传输
IO Input Output
可以实现上传和下载-互联网事情
5、IO流对象分类
1. 按照流向分类
输入流和输出流
Input Output
输出流: Java程序向其他设备写数据 write
输入流: Java程序从其他设备读取数据 read
2. 按照操作的文件分类
字节流和字符流
字节流,每次操作数据中的1个字节, 8个二进制位 byte
字符流,每次操作数据中的1个字符, 16个二进制位 char
字节流,可以操作任意文件
字符流,只能操作文本文件 (记事本,java源代码)
使用记事本打开后,人类可以看懂
字节流: JDK1.0, 字符流:JDK1.1 (输出还是输入,必须查询编码表,GBK)
ASCII,中文GBK(GB2312) Unicode万国码
3. 归纳
字节输出流
写文件,任意文件
字节输入流
读取文件,任意文件
字符输出流
写文件,文本文件,其他文件不行
字符输入流
读取文件,文本文件,其他文件不行
6、IO对象继承体系四大抽象基类
1. 字节输出流抽象基类
java.io.OutputStream 写文件,类中方法都是写的方法,方法名write
write(int b) 写单个字节
write(byte[] b)写字节数组
write(byte[] b,int off,int length)写字节数组一部分
参数: off 开始索引 length 写几个
close() 关闭流,释放资源
2. 字节输入流抽象基类
java.io.InputStream 读取文件,类中的方法都是读的方法,方法名read
int read() 读取单个字节
int read(byte[] b)读取数据,存储到字节数组
close() 关闭流,释放资源
3. 字符输出流抽象基类
java.io.Writer 写文件,只能写文本文件,方法名字write
write(int c) 写单个字符
write(char[] c)字符数组
write(char[] c,int off,int length)写字符数组一部分
参数: off开始索引, length 写几个
write(String s) 写字符串
flush() 刷新该流的缓冲区,字符流写数据,必须刷新
必须刷新,数据才能到达目的地
close() 关闭此流,要先刷新
4. 字符输入流抽象基类
java.io.Reader 读取文件,只能读取文本文件,方法名字read
int read() 读取单个字符
int read(char[] c)读取数据,存储字符数组
close() 关闭此流
Reader类没有直接读取字符串的方法
字符串不能界定完整
write("fghjkl")
read()
7、字节输出流写文件
FileOutputStream,写文件的字节输出流
1. 构造方法,写的内容就是这个流的数据目的
FileOutputStream(File file)传递File对象,包装文件
FileOutputStream(String filename)传递字符串文件名
FileOutputStream(File file,boolean)
FileOutputStream(String filename,boolean)
boolean表示,文件是不是追加写入
2. 写的方法
write 用的都是父类OutputStream
当你用字节流写数据的时候,会出现一个莫名其妙异常
IOException: 拒绝访问
两个错误:
FileOutputStream构造方法中写的是文件夹
登录Windows权限不足,写文件的位置是c盘
程序Demo: FileOutputSream
8、字节输入流读取文件
FileInputStream 读取文件
1. 构造方法,就是这个流要读取的数据源
FileInputStream(File file)传递File对象,包装文件
FileInputStream(String filename)传递字符串文件名
2. 读取方法 read
int read() 读单个字节,读1个字节,8个二进制
int返回值说明什么问题
程序Demo: FileIntputSream