Первая Java-программа (запись перестановок в файл) - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь записать комбинации с повторениями в текстовый файл, проблема в том, что я пытаюсь собрать воедино некоторый код, не зная внутренней работы 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); 
         }
       }

    }
    }

}

Любая помощь приветствуется

1 Ответ

1 голос
/ 15 апреля 2011

Полагаю, проблема в том, что вы получаете пустой файл в конце работы приложения?

Вам следует упростить бит, который записывает код:

FileWriter fstream = new FileWriter("out.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write("blah" + output);

You 'открывать файл каждый раз и записывать его.Это нормально (лучше всего записать его в уже открытый поток), но вам не нужно создавать 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, чтобы гарантировать, что ваши файлы всегда закрыты, даже в случае исключения
...