日期:2014-05-20  浏览次数:20842 次

java 中的nio关于一行一行读文件,怎么读
这两天研究nio包,看的例子和说明,发现nio只能一个字节一个字节的读写没办法以行为单位进行读写,各位,有办法吗?

------解决方案--------------------
up
不能封装能别的吗
------解决方案--------------------
如果把readline()这样的方法看成是使用一个小缓冲区的话,
nio就是使用一个大缓冲区作为一个单位读写.

'行 '是视觉上的概念,计算机不过是通过 '\n ', '\r '区分的.
------解决方案--------------------
孙卫琴的 < <java网络编程精解> > 里讲的很清楚 不过我忘了。。
不好意思。。
------解决方案--------------------
为什么要设1K缓存呢?
按下面这样,有什么判断 '\n ', '\r '的在content数组里面进行不就行了?
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class Test16 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
FileInputStream fi = new FileInputStream( "1.txt ");
FileChannel fc = fi.getChannel();
int length = (int) fc.size();
System.out.println(length);
MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, length);
byte[] content = new byte[length];
buffer.get(content, 0, length);
System.out.print(new String(content));
}
}
------解决方案--------------------
要是需要一行一行处理的话还是用BufferedReader的readLine吧...
我试了试,用ByteBuffer的话,光处理分行问题就费不少时间.