输入/输出流

  • read和write方法在执行时都将阻塞,直至字节确实被读入或写出。
  • 完成操作后要通过close方法将资源关闭,输出流在关闭时会冲刷缓冲区。


完整的流家族


任何实现了Closeable接口的类都可以使用try-with-resource来自动关闭资源

组合输入/输出流过滤器

  • FileInputStream和FileOutputStream可以向构造器提供一个文件名或玩增路径名来获取对应文件的流。
  • 所有在java.io中的类都将相对路径名解释为以用户工作目录开始。可以通过System.getProterty(“user.dir”)来获取工作目录
  • windows和linux的文件分隔符是不一样的,对于可移植的程序来说应该用常量字符串java.io.File.separator来获取它
  • System.getPrority(“line.separator”)获取当前主机恰当的结束符
  • 各种不同功能的流过滤器可以非常灵活的组合在一起,来达到想要的功能


文本输入与输出

  • 在保存数据时,可以选择二进制格式或文本格式(字符串)。二进制格式I/O高速且高效,但不适合阅读。
  • java内部使用的编码方式是UTF-16,每个码元用两个字节表示。
  • 互联网上常用UTF-8来编码,在获取输入输出流时应该指定我们的编码方式,不然就是用主机系统默认的,不同平台的不同,会出现跨平台错误

PrintWriter

此类可以用于文本输出,能以打印字符串和数字的方法。


字符编码方式

  • Java针对字符使用的时Unicode标准,每个字符或编码点都具有一个21位的整数。
  • 最常见的utf-8会将每个unicode编码点编码位1-4个字节序列。是动态的
  • UTF-16是将每个Unicode编码点编码为1个或2个16位值,要么2个字节,要么4个字节

读写二进制数据

随机访问文件

zip文档




对象输入输出

操作文件

java.nio.file.Path


java.nio.file.Files

Files处理中等长度的文件可以很方便,大文件还是应该使用输入流输出流、读入器写出器

  • 读写文件

  • 创建文件和目录

  • 移动、复制、删除文件

  • 获取文件信息

  • 访问目录中的项

  1. Files.list(Path) — Stream 不会进入子目录
  2. Files.walk(Path) — Stream 处理所有子目录
  3. Files.walk<Path) — Stream<Path,depth> 限制访问子目录深度
  • 使用目录流
    DirectorStream不是java.util.stream.Stream的子接口,二十Iterable的子接口,可以for循环

  • zip文件系统

内存映射文件

大多数操作系统可以利用虚拟内存实现将一个文件或一部分映射到内存中,然后像内存数组一样访问,会快得多


  • 缓冲区数据结构


  • 文件加锁机制


原文地址:http://www.cnblogs.com/studyhaha/p/16870189.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性