第一个Java程序(将排列写入文件)

| 我正在尝试将重复的组合写入一个文本文件,问题是我试图在不了解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); 
         }
       }

    }
    }

}
任何帮助表示赞赏     
已邀请:
我猜问题是在运行应用程序结束时您得到了一个空文件? 您应该简化将代码写出来的位:
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();
似乎可以使程序正常工作(代码中存在一些语法错误,例如忘记捕获/抛出已检查的异常,但是我认为这仅仅是因为代码是手动复制的)。 有关如何整理的建议: 每次写入项目时,写入流而不是打开和关闭文件 使用ѭ5来确保您的文件始终关闭,即使发生异常也是如此     

要回复问题请先登录注册