我正在尝试将重复组合写入文本文件,问题是我试图在不知道java的内部工作原理的情况下将一些代码组合在一起。我正在重新排列代码时,我不确定自己在做什么。
import java.io.*;
public class Main {
public static void main(String args[]) {
brute("123", 3, new StringBuffer());
}
static void brute(String input, int depth, StringBuffer output) {
if (depth == 0) {
// System.out.println(output);
{
try{
// Create file
FileWriter fstream = new FileWriter("out.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write("blah" + output);}
else {
for (int i = 0; i < input.length(); i++) {
output.append(input.charAt(i));
brute(input, depth - 1, output);
output.deleteCharAt(output.length() - 1);
}
}
}
}
}
感谢任何帮助
答案 0 :(得分:1)
我想问题是你在运行应用程序结束时得到一个空文件?
您应该简化编写代码的位:
FileWriter fstream = new FileWriter("out.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write("blah" + output);
每次打开文件并将其写出来。没关系(最好将它写入已经打开的流),但是你不需要创建BufferedWriter
,你可以稍微简化代码。
FileWriter fstream = new FileWriter("out.txt", true);
fstream.append(output);
如果您运行此代码,您仍会发现它不起作用,它只会在磁盘上生成一个空文件。在你使用它之后关闭它是很重要的。将上述内容更改为:
FileWriter fstream = new FileWriter("out.txt", true);
fstream.append(output).append('\n');
fstream.close();
似乎使程序工作(代码中存在一些语法错误,例如忘记捕获/抛出已检查的异常,但我认为这只是因为代码是手动复制的。)
有关如何整理此内容的建议:
finally
确保您的文件始终处于关闭状态,即使发生异常