FileChannel,是内存与磁盘文件的通道。
========================================================
优势:
- 多线程并发读写,并发性;
- IO读写性能提高(OS负责),也可引做共享内存,减少IO操作,提升并发性;
- 应用crash,保证这部分内容还能写的进去文件。在我们调用channel.write(bytebuffer)之后,具体何时写入磁盘、bytebuffer中内容暂存于哪里(os cache)等相关一系列问题,就交由OS本身负责了。
========================================================
- read(),write()
- lock(), tryLock()
- position(), size(), truncate()
- transferFrom(), transferTo()
- map()
【方法的具体含义】:http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/nio/channels/FileChannel.html
=========================================================
备注:
- JAVA操作大数据量的文件利用FileReader的会把所有的内容加载到内存中,因此没有意义。
如果要使用BIO,建议使用java.io.RandomAccessFile来做,读取部分信息。
如果要使用NIO,建议使用java.nio.channels.FileChannel,使用虚拟内存来Mapping大文件。
http://simpleframework.net/bbs/835/7894.html
关于File,简单的:
File f = new File("D:/hutuTesting.txt");
System.out.println(f.getName()); // hutuTesting.txt
System.out.println(f.getAbsolutePath()); // D:\hutuTesting.txt
System.out.println(f.toString()); // D:\hutuTesting.txt