![](/img/trans.png)
[英]How to check if reading the last line AND if at last line, how to add a new line at the end of file in JAVA?
[英]Check if a new line exists at end of file
我創建了一個簡單的方法來將文本追加到文件:
void writeFile(String fileName, String... values) {
File file = new File(fileName);
file.getParentFile().mkdirs();
try(BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
for (String value: values) {
bw.write(value);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
但是,對於如何在寫入之前檢查文件末尾是否存在新行以確保正確存儲,我一無所知。
同樣,在處理較大文件時,它必須具有可伸縮性。
感謝SMA鏈接到快速讀取文本文件的最后一行? ,我能夠創建一種方法來檢查是否存在新行,然后創建一個新行(如果不存在)。
void writeFile(String fileName, String... values) {
File file = new File(fileName);
file.getParentFile().mkdirs();
boolean fileExists = file.exists();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
if (fileExists && !newLineExists(file)) {
bw.newLine();
}
for (String value : values) {
bw.write(value);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
boolean newLineExists(File file) throws IOException {
RandomAccessFile fileHandler = new RandomAccessFile(file, "r");
long fileLength = fileHandler.length() - 1;
if (fileLength < 0) {
fileHandler.close();
return true;
}
fileHandler.seek(fileLength);
byte readByte = fileHandler.readByte();
fileHandler.close();
if (readByte == 0xA || readByte == 0xD) {
return true;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.