概述
File类
表示目录路径名的抽象表示形式,一个File对象就是一个文件或文件夹
作用是用来操作硬盘上的文件或文件夹
文件路径分为绝对路径和相对路径
File类构造方法
File(“C:/aaa”)
File类获取功能
String getAbsolutePath();获得绝对路径字符串
String getPath();
String getName();获得文件或文件夹名称
long length();获得文件大小,单位:字节.如果文件不存在返回值为0.只能获得文件的大小,不能获得文件夹的大小
* File getParentFile();获得父路径文件对象
File类判断功能的方法
* public boolean exists();判断文件或文件夹是否存在,存在返回true,否则false
例:new File(“day008.iml”);判断的是创建IDEA模块路径下有没有该文件
* public boolean isDirectory();判断是否是文件夹,是返回true,不是或者不存在false
* public boolean ifFile();判断是否是文件,是返回true,不是或者不存在返回false
File类创建删除功能的方法
* public boolean createNewFile();
根据文件对象的路径创建文件.创建成功返回true,创建失败或者文件已经存
在则返回false. 只能创建文件,不能创建文件夹
例:new File(“aaa”);创建aaa文件,默认地址是创建IDEA模块的地址
* public boolean delete();删除文件或空文件夹,删除成功返回true,否则false
* public boolean mkdir();创建单级文件夹,创建成功返回true,创建失败或文件夹已经存在则返回false 只能创建文件夹,不能创建文件
* public boolean mkdirs();创建单级或多级文件夹,创建成功返回true,创建失败或者文件夹已经存在,则返回false 只能用来创建文件夹,不能用来创建文件
例:new File(“aaa/bbb”);创建的是aaa里面包含bbb的文件夹
File类遍历目录的方法
* public String[] list();
* public File[] listFiles();
获取当前文件夹下所有的文件(子文件夹和普通文件)
创建文件对象是绝对路径时 打印的是路径加名称,.getName可以只获得名称
注意:创建的文件对象必须是文件夹,否则返回值为null
什么是递归:方法内部自己调用自己称为递归
递归的分类:
* 间接递归:方法A调B,B调C,C调A
* 直接递归:方法A调用方法A
递归的注意事项:
* 递归一定要有出口:结束递归的条件.不然是死循环导致栈内存溢出错误
* 递归次数不要太多
File类与文件过滤器相关的方法
* File[] listFiles(FileFilter filter); 使用指定文件过滤器过滤文件
FileFilter接口描述
* 只要是实现了该接口的对象就是一个文件过滤器对象
FileFilyter接口下只有一个accapt抽象方法,根据返回值判断过不过滤
accept方法的调用时机
* 每当获取到一个文件或文件夹时,内部会将该文件或文件夹封装成File对象,然后将File对象作为该方法的参数传递调用该方法
accapt方法返回值的作用
* true:接受该文件,不过滤该文件
* false:不接受该文件,过滤该文件
在获取路径下所有文件是使用该接口对文件过滤
什么是io
* input:输入操作
* output:输出操作
* 输入和输出是以Java程序为参照物的
学习io流的目的
* 实现数据的持久化: 文件和数据库
Io流的作用
* 将内存中的数据保存在文件中
* 将文件中的数据读取到内存中
Io流注意事项:
* 流一旦被关闭了就不能再读写数据了
* 输入流关联的目标文件如果不存在,则抛出异常
* 流关联的目标文件不能是文件夹,如果是文件夹则会抛出异常
字节数出流:OutputStream
构造方法:FileOutputStream(String name/File file,Bollean)
常用方法:close;关闭资源
write(int b / byte[] b / byte[] b,int off,int len)输出到目标文件
字节输入流:InputStream
构造方法:FileInputStream(String name / File file)
常用方法:close;关闭资源
int read();读取输入的内容
字符输出流:Rander
构造方法:FileRander(String name / File file)
常用方法:close();关闭流
intread();读内容
字符输出流:Writer
构造方法:FileWriter(String name / File file)
常用方法:close();关闭流
write();输出
Properties属性集
实现了Map接口继承Hashtable,双列集合
* Object setProperty(String key, String value)
添加键值对
如果键存在,则使用新值替换旧值,返回旧值,否则返回null
* String getProperty(String key)
根据属性名获得属性值(根据键获得值)
* void store(OutputStrean out,String comments)
将集合中的数据保存到流关联的目标文件中 (输出流)
comments:描述信息字符,一般给null
* void load(InputStream in)
从流关联的目标文件中加载数据到集合中(输入流)
* close方法用来关闭流释放资源,关闭之前会调用flush方法先刷新缓冲区,将缓冲区数组的数据 输出到目标文件中。 close方法调用之后就不能再使用流了。
* flush方法将缓冲区数组的数据输出到目标文件中,flush方法调用之后,流还可以继续使用
缓冲流
字节缓冲输出流:BufferedOutputStream;write方法
字节缓冲输入流:BufferedInputStream;read方法
字符缓冲输出流:BufferedWriter;void newline()输出换行符
字符缓冲输入流:BufferedReader;String readline()读一行
转换流
字符输出转换流:OutputStreamWriter
字符输入转换流:InputStreamReader
默认使用的是UTF-8,可以指定码表的名称
序列化流(对自定义对象进行操作)
ObjectOutputStream:保存对象 writeObject(object)保存
ObjectInputStream:读取对象readObject()读取
将自定义对象写入文件或从文件拿出
序列化对象时注意事项
* 被序列化的对象(自定义的对象)要实现Serializable接口
* 当想修改自定义对象的变量,需要自定义序列号使其不变
private static final long serialVersionUID = 1L;
* 对象序列化只会保存对象本身数据,属于类的数据不会被序列化到文件中,而静态成员变量是属于类的 不属于某个对象.
* transient关键字概述
用来修饰成员变量的,能够保证该成员变量的值不会被序列化到文件中
* transient关键字使用格式
修饰符 transient 数据类型 成员变量名; public transient String idCard;
打印流
本质就是输出流:只有输出流,没有输入流 * 能够方便直接原样输出各种数据类型的值
* 字节打印流:PrintStream 可以往任意类型文件打印数据
* 字符打印流:PrintWriter 只能往文本文件打印数据
最后
以上就是淡然草丛为你收集整理的io流处理文件的全部内容,希望文章能够帮你解决io流处理文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复