Java把所有设备里的有序数据抽象成流模型。
输入流&输出流(以程序运行内存来看)、字节流(InputStream)&字符流(Reader/Writer)、节点流&处理流【装饰器模式:使用处理流来包装不同的节点流】
重定向 System.setErr(); System.setOut(ps); System.setIn(fis);
RandomAccessFile
既可以读取文件内容,也可以向文件输出数据。“随机访问”,可以直接跳转到文件任意地方来读写数据,故只是访问文件部分内容,而不是从头读到尾,选择RandomAccessFile。
直接读写文件,不能读写其他IO节点。
RandomAccessFile raf = new RandomAccessFile("a.java”, “rw”);// r rw rws rwd
raf.getFilePointer(); raf.seek(raf.length() ); raf.write();
RandomAccessFile不能向文件指定位置插入内容(会覆盖),只能在最后追加内容,how?先把插入点后面内容读入缓冲区,把插入的内容写入文件后再将缓冲区内容追加到文件后面。
NIO.2
java7对原有NIO进行重大改进:
a)提供全面的文件IO和文件系统访问支持:新增java.nio.file包及各个子包
b)基于异步Channel的IO(NIO.2):在java.nio.channels包下新增多个以Asynchronous开头的Channel接口和类
引入Path接口,代表一个平台无关的平台路径。Files工具类操作文件,Paths工具类两个返回Path的静态方法。
FileVisitor遍历文件和目录(SimpleFileVisitor) Files.walkFileTree()
WatchServie监控文件变化 Path.get(“C:/”).register(watchService, )
访问文件属性java.nio.file.attribute包下的工具类