2011-04-14 47 views
-1

我试图用重复编写组合文本文件,问题是我试图在不知道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); 
     } 
     } 

    } 
    } 

} 

任何帮助表示赞赏

+0

您是否可以编辑您的文章以使所有代码看起来像代码一样帮助我们?谢谢! – 2011-04-14 22:21:40

+3

那么,问题是什么? – Aleadam 2011-04-14 22:23:19

+0

非常感谢 – 2011-04-14 22:24:08

回答

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一个项目,以确保您的文件一直处于关闭状态时,即使在发生异常时也是如此