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

“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流会一直存在,直到程序运行结束。

public static void main(String[] args) {

File data = new File("data.txt")

try {

InputStreamReader read = new InputStreamReader(new FileInputStream(

data), "UTF-8")

final BufferedReader bufferedReader = new BufferedReader(read)

for (int i = 0i <5i++) {

new Thread(new Runnable() {

@Override

public void run() {

String lineTXT = null

synchronized (bufferedReader) {

try {

while ((lineTXT = bufferedReader.readLine()) != null) {

System.out.println(Thread.currentThread()+":"+lineTXT)

bufferedReader.notify()

bufferedReader.wait()

}

} catch (IOException e) {

e.printStackTrace()

} catch (InterruptedException e) {

e.printStackTrace()

}finally{

bufferedReader.notifyAll()

}

}

}

}).start()

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

} catch (FileNotFoundException e) {

e.printStackTrace()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12128700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存