怎么在java中使用多線程讀取多個(gè)文件?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)公司是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的四川雅安服務(wù)器托管服務(wù)
工具類代碼如下:
import java.io.*; import java.util.List; import java.util.concurrent.CountDownLatch; /** * 多線程讀取多個(gè)文件 */ public class FileThread extends Thread{ private final CountDownLatch countDownLatch = new CountDownLatch(10); private int fileIndex; private List<String> filelist; private String filepath = "D:\\LocalFtpServer\\data20181229\\"; private String movepath = "D:\\LocalFtpServer\\data20181229_01\\"; public int getFileIndex() { return fileIndex; } public void setFileIndex(int fileIndex) { this.fileIndex = fileIndex; } public List<String> getFilelist() { return filelist; } public void setFilelist(List<String> filelist) { this.filelist = filelist; } @Override public void run() { for (int i = 0; i < filelist.size(); i++) { if (i % 10 == fileIndex) { //讀取文件 File readfile = new File(filepath + filelist.get(i)); InputStreamReader isr = null; try { isr = new InputStreamReader(new FileInputStream(readfile), "UTF-8"); BufferedReader reader = new BufferedReader(isr); String line = null; // 一次讀入一行,直到讀入null為文件結(jié)束 while ((line = reader.readLine()) != null) { System.out.println(line ); } reader.close(); isr.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //讀取完后, 移動(dòng)文件位置 readfile.renameTo(new File(movepath + readfile.getName())); } } countDownLatch.countDown(); } }
調(diào)用測(cè)試:
public static void main(String[] args) throws IOException { String filepath = "D:\\LocalFtpServer\\data20181229\\"; File file = new File(filepath); //讀取目錄下所有文件 String[] filelist = file.list(); List<String> fList=new ArrayList<String>(); for (int i = 0; i < filelist.length; i++) { if (filelist[i].startsWith("data") && filelist[i].endsWith(".txt")) { fList.add(filelist[i]); } } for(int i=0;i<30;i++){ FileThread fileThread=new FileThread(); fileThread.setFileIndex(i); fileThread.setFilelist(fList); fileThread.start(); } countDownLatch.await(); }
Java中的集合主要分為四類:1、List列表:有序的,可重復(fù)的;2、Queue隊(duì)列:有序,可重復(fù)的;3、Set集合:不可重復(fù);4、Map映射:無(wú)序,鍵唯一,值不唯一。
關(guān)于怎么在java中使用多線程讀取多個(gè)文件問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
分享題目:怎么在java中使用多線程讀取多個(gè)文件
當(dāng)前URL:http://jinyejixie.com/article46/ijdseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)