Как вывести строки строк из файла с помощью рекурсии и потоков в Java - PullRequest
0 голосов
/ 29 ноября 2011
sldls slfjksdl slfjdsl
ldsfj, jsldjf lsdjfk

Эти строковые строки взяты из файла с именем "input".

Как вывести эти строковые строки в обратном порядке в файл с именем "ouput" с помощью ввода, выходного потока и рекурсии в Java

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Это не совсем пример лучших практик Java, но он работает и этого должно быть достаточно, чтобы вы начали

public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException, IOException {

    Scanner scanner = new Scanner(new File("infile.txt"), "UTF-8");
    FileOutputStream fileOutputStream = new FileOutputStream("outfile.txt");
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");  
    recurse(scanner, outputStreamWriter);
    outputStreamWriter.close();
}
static void recurse(Scanner scanner, OutputStreamWriter outputStreamWriter) throws IOException {
    String line = scanner.nextLine();
    if (scanner.hasNext())
        recurse(scanner, outputStreamWriter);
    outputStreamWriter.write(line + "\n");
}

Второй аргумент кодирования для Scanner и OutputStreamWriter может быть отброшен, если выиспользуя кодировку вашей системы по умолчанию.

0 голосов
/ 29 ноября 2011

Я не собираюсь помещать здесь весь код, но я помещу сегменты из каждой ключевой области, и, надеюсь, вы разберетесь, чтобы собрать все воедино.

Вот как вы должны обратить заданную строку

public static String reverseString(InputStream is) throws IOException {
 int length = is.available();
 byte[] bytes = new byte[length];
 int ch = -1;
 while ((ch = is.read()) != -1) {
  bytes[--length] = (byte) ch;
 }
 return new String(bytes);
}

Вот так должен выглядеть ваш основной метод, вызывая вышеуказанную функцию.

InputStream is = new FileInputStream(f);
String reversedString = reverseString(is);

И, наконец, мы надеемся, что вы дадите понять, как записать файл, поиграв с этим.

  try{
  // Create file 
  FileWriter fstream = new FileWriter("/Users/anu/GroupLensResearch/QandA/YahooData/L16/out.txt");
  BufferedWriter out = new BufferedWriter(fstream);
  out.write(reverseRead(is));
  //Close the output stream
  out.close();
  }catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...