我是一名有一定C ++经验的人,正在学习Java,并且在这个网站上学习非常愉快。 最近,我进行了一些关于如何将一个文件附加到另一个文件的Java研究。 假设我有两个文件。 这里是C:\ tmp \ permFile.txt:
Line A: abcef
Line B: ghijk
Line C: lmnop
这里是C:\tmp\tmpFile.txt:
line 1: 1234567890
line 2: 0123456789
line 3: 9012345678
line 4: 8901234567
这里的目标很简单:我想要将tmpFile.txt追加到permFile.txt的末尾。我查阅了相关代码,认为我已经解决了这个问题。只是今天我注意到运行代码后,permFile.txt看起来像这样:
Line A: abcef
Line B: ghijk
Line C: lmnop: 9012345678
line 4: 8901234567
我认为这里发生的情况是permFile有48个字符(每行16个字符)。我的代码在tmpFile中准确地计算了48个字符,并从第49个字符开始追加。很奇怪,对吧?
下面是代码:
import java.io.*;
public class myProgram {
public static void main(String[] args) throws IOException {
// Define two filenames:
String permFile = "C:\tmp\permFile.txt";
String tmpFile = "C:\tmp\tmpFile.txt";
appendFiles appender = new appendFiles(permFile, tmpFile);
}
}
public class appendFiles {
public static void appendFiles(String permFile, String tmpFile) throws IOException {
// Appends file "tmpFile" to the end of "permFile"
// Code adapted from: https://www.daniweb.com/software-development/java/threads/44508/appending-two-java-text-files
try {
// create a writer for permFile
BufferedWriter out = new BufferedWriter(new FileWriter(permFile, true));
// create a reader for tmpFile
BufferedReader in = new BufferedReader(new FileReader(tmpFile));
String str;
while ((str = in.readLine()) != null) {
out.write(str);
}
in.close();
out.close();
} catch (IOException e) {
}
}
}
我怀疑我需要做的是添加一行代码,将“out” BufferedWriter 指向 permFile 的 END 而不是开头。但是我的尝试都很失败,这里不值得详细说明。另外,如果“out”指向 permFile 开头,为什么 tmpFile 的内容不会覆盖 permFile 的所有内容,这一点我不明白。我怀疑我犯了一个简单的新手错误。
非常感谢!-P
PS - 无法形容我有多喜欢这个网站。我总是尝试自己研究解决方案,但当遇到特定问题时,向真正的人寻求帮助是无可替代的。
"C:\tmp\permFile.txt"
是虚构的,否则这段代码无法编译。你需要使用\转义字符串字面值中的\。 - toddlermenot