0
您好,我有一個讀取文件的問題。用metod JAVA讀取BIG文本文件
我有大的.txt文件(500MB)
,我想閱讀方法行我開始方法medhor rsault是第一道防線。 我開始方法秒和返回第二行
我有這個代碼。我保存最後一個讀取行和讀取行+ 1,但程序停止在每行<最後一行讀取。如果我讀了100 000 <這條線太長了。
public static Boolean Jedno(){
int poradievtahu=0;
int[] tah=new int[7];
String subor= "C:/Users/Paradox/workspace/Citaj_po_Riadku/all6.txt";
Scanner sc;
try {
sc = new Scanner(new File(subor));
int lineIndex = 0;
cit: while(sc.hasNextLine()) {
String line = sc.nextLine();
if(lineIndex++ >= pocetC+1) {
System.out.print("Zvacsujem "+ (pocetC+1) + " " + line);
// do something
poradievtahu=-1;
Scanner scanner=new Scanner(line);
while(scanner.hasNextInt()){
int pom= scanner.nextInt();
tah[++poradievtahu]=pom;
if (poradievtahu==5){
poradievtahu=-1;
pocetC++;
if ((pocetC%(55935)==0)&&(pocetC!=0)){
Calendar cal = Calendar.getInstance();
PrintWriter writer4 = new PrintWriter(new BufferedWriter(new FileWriter("nove.txt", true)));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
writer4.println("Ďalšia 1/1470 in " + sdf.format(cal.getTime()));
writer4.println(Arrays.toString(tah));
writer4.close();
}
if (pocetC>=13983816){
//berem=false;
PrintWriter writer4 = new PrintWriter(new BufferedWriter(new FileWriter("mozne.txt", true)));
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
writer4.println("End file in " + sdf.format(cal.getTime()));
writer4.close();
return true;
}
Pocty.hladam=tah;
}
}
break cit;
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
請問你有些IDE如何解決問題?但如果我設置了500000行,它會超過1秒。但文件有19 000 000行..
,以及如何獲得STARTLINE串? – user7575308
正如你所看到的_lines_變量是流數據類型,所以你可以使用lambda(Java8)循環流。 'lines.forEach(l - > { //這裏是你的邏輯來處理每一行...... });' ** l **是startline,它已經是循環中的字符串了 –
@ user7575308更新了答案希望現在更清楚。 –