前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习与应用(3.4)--File类、IO流

java学习与应用(3.4)--File类、IO流

作者头像
嘘、小点声
发布2020-02-18 13:55:32
9660
发布2020-02-18 13:55:32
举报
文章被收录于专栏:嘘、小点声嘘、小点声

File类

File类,文件和目录的抽象表示,创建,删除,获取,判断,遍历,大小。在使用过程中特别注意大小写对文件的影响或者一些异常。 pathSeparator路径分割符(静态成员变量)等,用于兼容各种路径分隔符在不同操作系统下。路径添加转义符号\\。 构造方法传入路径获取该文件或文件夹(无所谓存在与否),获取对象。传入父路径和子路径,获取文件或文件夹。构造方法传入文件对象父路径和子路径。 getAbsolutePath方法,getPath方法,getName方法,length方法获取文件大小(字节为单位)。list方法获取所有子文件和目录(String数组),listFiles方法获取文件和目录(File数组) exists判断文件或文件夹存在性,isDirectory是目录,isFile是文件。createNewFile创建空文件,delete删除文件或目录,mkdir创建单级文件夹,mkdirs创建多级文件夹。 listFiles方法传入过滤器 FileFilter用于过滤文件(File)的接口,其中的accept方法,用于测试路径名是否包含。自定义过滤器。 FilenameFilter用于过滤文件名接口,其中accept方法,测试文件名是否包含在列表中。

输入输出流

输入:硬盘-->内存 输出:内存-->硬盘。1字节=1byte OutputStream输出流,close方法关闭输出流,释放关联资源。flush方法刷新输出流,缓存字节写出。write写入(传入字节数组[可写入中文,首字节为负],可选数组偏移和长度,或字节比特[非字符])。 FileOutputStream,构造方法传入字符串,创建一个写入到文件的输出流。传入File对象,向File对象表示否文件写入文件数据。String的getBytes方法,将字符串转换为字节数组,方便写入 构造方法传入两个参数,第二个参数定义为追加写开关,默认flase(重建文件写)。Linux的换行/n,Windows换行\r\n,Mac换行/r。用于写入换行 InputStream输入流,close关闭,read方法(读取一个字节,字节数组)。 FileInputStream,传入对象或字符串等创建对象。读取过程中自动的指针移动。读取到末尾长度为-1(windows结束标记的JVM返回值)。 读取字节数组时,read传入byte数组[定义好一次读取的长度,一般定义为1024]调用,获取读取的byte数组,并返回获取长度。使用new String(bytes)构造方法,将字节数组转化为字符串。

字符流

Reader字符流[非字节流],针对中文等非ASCII读写。read(读字符,字符数组)方法,close关闭。 FileReader类,构造方法传入对象或字符串表示文件后,调用其继承的方法读取[单个或多个字符],可读取中文。 Writer字符输出流,包括write(单个字符,字符数组,可选偏移,字符串,字符串可选偏移),close,flush等方法。 FileWriter类,创建对象后,使用write写入(自动将字符转换为字节,暂写内存[不同于写字节]),然后数据刷新flush方法刷新到文件中。close方法关闭流,也会执行flush。 续写和换行和字节流相同。异常(IOException)的处理使用try catch finally结构,finally中写入释放资源的方法,并再次引入try catch解决finally中的异常。 JDK7以后,在try后添加括号,填入声明流对象,在{}中添加方法,运行完毕自动释放<--更优。JDK9可以在try()中添加外部声明后的流对象,也会自动释放。

IO流与HashTable

Properties集合类,继承了HashTable集合,实现了Map接口,key和value默认为字符串。 store方法(字节输出流或字符输出流,[英文注释])数据写入硬盘, load方法(字节输入流或字符输入流)数据读取到内存。读取的数据是非注释行数据(#),分隔符可以是空格,等号等作为键值对分隔符 setProperty方法,对应Hashtable的put(key,value)方法,getProperty方法,对应get(key)方法,stringPropertyNames对应keySet方法获取键集。 创建集合后,放入数据,使用store或load方法即可。

缓冲流

缓冲流,给基本流增加缓冲区,缓冲区数组批量处理,进一步提高效率(相比单字节处理和多字节处理)。 BufferedOutputStream字节缓冲输出流,构造方法中传入字节输出流(可选大小)创建对象后,使用其write方法写入数据,使用其flush刷新,使用close关闭。 BufferedInputStream字节缓冲输入流,构造方法中传入字节输入流(可选大小),使用其read方法等,读取数据,使用close关闭。读取方法相同。 BufferedWriter,创建缓冲字符输出流,构造方法传入字符输出流,使用newline方法写入行分隔符。使用write,flush写入,close关闭。 BufferedReader,创建缓冲字符输入流,构造传入输入流,使用readline方法读取一行(终止符号为\r\n或\r等,不读取)。读取单个或多个字符使用read方法,close关闭。读取到空位结束(非-1) HashMap中的key自动排序(遍历)。

转换流

转换流,字符编码,ISO字符集,拉丁码表。GB中国国标,GB2312<GBK<GB18030。Unicode字符集,万国码(UTF8/16/32),UTF-8常用(1到4字节表示,3个字节存储一个中文)。 FileReader等,支持中文,则包含了默认编码解码问题。FileInputStream字节输入,通过FileReader默认的UTF-8读取文件(IDE默认编码)。FileOutputStream输出FileWriter的UTF-8格式字节流到文件中。 InputStreamReader,通过默认UTF-8或指定码表解码字节流读取。OutputStreamWriter流,以默认码表或自定义码表将字符流转换为字节流。 OutputStreamWriter类,通过构造方法传入FileOutputStream(OutputStream及子类)(可选编码表),创建对象,write写入缓冲,flush刷新到文件中,close关闭。 InputStreamReader类解码,构造方法传入InputStream(FileOutputStream及子类)(可选编码表),创建对象,read读取,close关闭。

序列化流

序列化流,把对象以流的方式写入到流中保存,对象的序列化ObjectOutputStream。反序列化流,以流的方式读取对象,对象的反序列化ObjectInputStream。 类的序列化功能需要实现Serializable接口,给类添加标记(没有内容)。显式声明序列号,在该接口实现中声明final long serialVersionUID,以便于反序列化成功。 序列化后修改class文件(序列号被改变),无法反序列化(序列号与文件中无法对应)。 创建ObjectOutputStream,构造方法传入FileOutputStream,通过writeObject将对象写入到文件中,最后关闭close。 ObjectInputStream的构造方法传入FileInputStream,通过readObject从文件中读取对象,最后关闭close。对象Object o强转,可以使用其方法,访问变量等。 transient瞬态关键字(静态成员变量不能被序列化),也用于标记不被序列化的成员变量。

打印流

打印流,PrintStream,用于数据输出(print,println等)。构造方法传入流,文件,路径等表示输出的目的地。 有close,flush,write等方法(继承了OutputStream)。也有print,println方法。 System.setOut方法,传入打印流对象,可以将System.out.println的输出重定向到指定位置。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • File类
  • 输入输出流
  • 字符流
  • IO流与HashTable
  • 缓冲流
  • 转换流
  • 序列化流
  • 打印流
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档