我有以下代碼:如何在不修改實際文件的情況下使用「文件」進行讀取?
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Printer {
private File f;
private Scanner in;
public Printer(){
try {
f = new File("C:\\Users\\Bob\\Desktop\\num.txt");
in = new Scanner(f);
}catch (IOException i){
System.out.println(i.getMessage());
}
}
public double average(){
int count = 0;
double total = 0;
while (in.hasNext()){
count++;
total += in.nextInt();
}
return total/count;
}
public void readFile(){
while (in.hasNext()){
System.out.println(in.next());
}
}
}
主營:
public class Main {
public static void main(String[] args) {
Printer mine = new Printer();
System.out.println(mine.average());
mine.readFile();
}
}
輸出:
5.666666666666667
注:我也期待打印出每一個字的。
如何在不修改文件的情況下從文件中讀取數據?我注意到,如果我這樣做in.nextInt();
它會從文件中刪除值。此外,當我調試,我的編譯器達到while (in.hasNext()){
它跳過循環。我會很感激,如果有人會告訴我一種方式來從文件中讀取而不實際修改它。我需要在我的一個分配中使用它,這些分配聲明該文件只會被使用一次,但是我想讓它更「動態」,因此可以保留該文件的原始內容以供日後使用使用。
'平均()'處理整個文件;當你調用'readFile()'時,文件指針位於文件的末尾,所以沒有其他可讀的內容。如果您想再次閱讀其內容,則需要重新打開該文件。 – vanza
@vanza通過重新打開你的意思是'F =新的文件( 「C:\\ \\用戶\\鮑勃桌面\\ num.txt」);'? –
檢查文件內部 - 確保你真的*正在修改它。我敢肯定,你的'mine.readFile()'調用已有的文件指針指向文件的結尾 - 你不能去讀別的。 – AVP