[英]bufferedReader readline=null
我試圖編寫一個將接收文本文件,反轉其內容並將其寫回的類。 我要執行的方法是在String[]
數組中寫入行,反轉行,然后將文本寫回到文本文件。 問題是,當我開始寫入String數組時,它只注銷空值,並且我知道文本文件不為空。 我正在使用BufferedReader
的副本來讀取行。 我似乎無法理解我在哪里錯。 當我像代碼中那樣向下初始化String
數組textFile時,反轉沒有問題,但是當我使用
String[] textFile = new String[getNumberOfLines ()];
方法,它不起作用。
public void reverse() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(WORK_FOLDER_LOCATION + FILE_NAME));
String[] textFile = new String[3];
try {
for (int i = 0; i < textFile.length; i++) {
textFile[i] = reader.readLine();
textFile[i] = reverseLine(textFile[i]);
}
} catch (IOException e) {
throw new IOException("There was a problem while operating with the reader.");
} finally {
reader.close();
}
writeReverseText(textFile);
}
private int getNumberOfLines(BufferedReader reader) throws IOException {
BufferedReader linesReader = reader;
int counter = 0;
try {
while (linesReader.readLine() != null) {
counter++;
}
linesReader.close();
} catch (IOException e) {
throw new IOException("There was a problem while counting the lines");
}
return counter;
}
private String reverseLine(String string) {
StringBuilder reversedString = new StringBuilder(string).reverse();
System.out.println(reversedString);
return reversedString.toString();
}
private void writeReverseText(String[] textFile) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(WORK_FOLDER_LOCATION + FILE_NAME));
for (int i = 0; i < textFile.length; i++) {
writer.append(textFile[i]);
writer.append(System.lineSeparator());
}
writer.close();
}
編輯我設法解決了這個問題,但是更改了getNumberOfLines()
方法:
private int getNumberOfLines() throws IOException {
BufferedReader linesReader = new BufferedReader(new FileReader(WORK_FOLDER_LOCATION + FILE_NAME));
希望這對其他人有所幫助,我很想知道為什么以前的代碼不起作用。
您的getNumberOfLines()
方法將從BufferedReader
讀取所有數據-因此,除非您再次開始讀取文件,否則將無法讀取任何內容,並且對readLine()
首次調用將返回null
。
但是,與其這樣做,不如最好只讀取一次文件並填充List<String>
。 例如:
List<String> lines = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(reverseLine(line));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.