【发布时间】:2015-01-23 21:21:44
【问题描述】:
我是一名经验适中的 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"是编造的,否则这段代码将无法编译。您需要使用 \\. 转义字符串文字中的 \