Печать точного содержимого текстового файла на Java - PullRequest
0 голосов
/ 25 марта 2010

Я хочу напечатать содержимое простого текстового файла на Java точно так, как текст отображается в текстовом файле.

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

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

Как указали @Joachim Sauer и @bmargulies, без более подробной информации мы не можем точно сказать вам, в чем проблема.

Но чтобы дать вам что-то для сравнения вашего кода, следующее будет читать файл, представленный в качестве аргумента, а затем читать его символ за символом (т. Е. Он поддерживает символы Юникода), печатая этот символ по ходу дела. Если это не достигнет вашей цели, неплохо было бы использовать конкретный (маленький) пример ввода, который вам не удался.

import java.io.*;
class printout {
   public static void main (String[] args) {
      if (args.length < 1) {
         System.err.println ("Usage: printout <filename>");
         System.exit (1);
      }

      File sourceFile = new File (args[0]);
      FileReader fr = null;
      try {
         fr = new FileReader (sourceFile);
         int inChar;

         while ( (inChar = fr.read()) != -1 ) {
            System.out.printf ("%c", inChar);
         }
      } catch (IOException e) {
         System.err.printf ("Failure while reading %s: %s\n",
                            args[0], e.getMessage());
         e.printStackTrace ();
      } finally {
         try {
            if (fr != null) { fr.close (); }
         } catch (IOException e) {
            System.err.printf ("Error closing file reader: %s\n",
                               e.getMessage());
            e.printStackTrace ();
         }
      }
   }
}
0 голосов
/ 25 марта 2010

С печатью вы имеете в виду это ? Затем попробуйте заменить все \ t, например, 4 пробела и \ n с новыми вызовами drawString.

Другая возможность - заполнить JTextComponent или JEditorPane и распечатать его.

Если вы имели в виду нормальную sys-out-печать, то посмотрите ответ RTBarnard + use:

BufferedReader reader = new BufferedReader(
    new InputStreamReader(new FileReader("file.txt"), "UTF-8");
reader.readLine(); etc

В моих глазах это проще, и вы всегда будете использовать правильную кодировку

0 голосов
/ 25 марта 2010

FileUtils.readFileToString(file) следует делать (из commons-io ), но будьте осторожны с большими файлами, поскольку они могут занимать всю память, выделенную для ВМ. *

Другая вещь, которую вы можете использовать, это IOUtils.copy(new FileInputStream(..), outputStream); - это передаст все из одного потока (в данном случае файлового потока) в другой поток вывода.

...