“java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”?

Python011

“java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”?,第1张

public class Test{\x0d\x0a public static void main(String args[])throws Exception{\x0d\x0a File file = new File("D:\\Test.java")//Text文件\x0d\x0aBufferedReader br = new BufferedReader(new FileReader(file))//构造一个BufferedReader类来读取文件\x0d\x0aString s = null\x0d\x0awhile((s = br.readLine())!=null){//使用readLine方法,一次读一行\x0d\x0aSystem.out.println(s)\x0d\x0a}\x0d\x0abr.close()\x0d\x0a }\x0d\x0a}

不可行。每次读取文件都需要创建缓存文件流,很占内存,而且多次读取实际上也是一个文件,还不如直接读取文件,之后通过条件多次获取需要的内容来的实际。

可以通过BufferedReader

流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader

bre

=

null

try

{

String

file

=

"D:/test/test.txt"

bre

=

new

BufferedReader(new

FileReader(file))//此时获取到的bre就是整个文件的缓存流

while

((str

=

bre.readLine())!=

null)

//

判断最后一行不存在,为空结束循环

{

System.out.println(str)//原样输出读到的内容,此处可以添加条件进行不同的处理

};

备注:

流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

多线程将读取的数据全部读取到一个Buffer里面去,然后再通过Buffer去处理,也就是生产者消费者模型,你将txt读取到一个ByteBuffer或者是大字节数组队列里面都可以,然后通过其它处理线程进行按行分隔