用Java打印文本文件的确切内容

时间:2010-03-25 10:59:45

标签: java text io

我想用Java完全按照文本在文本文件中出现的方式打印简单文本文件的内容。

打印输出与文本文件具有相同的内容,但格式不同。打印输出中将忽略制表符和换行符。任何帮助将非常感谢。

3 个答案:

答案 0 :(得分:2)

正如@Joachim Sauer和@bmargulies指出的那样,没有更多细节,我们无法真正告诉你究竟是什么问题。

但为了给你一些与你的代码形成鲜明对比的东西,下面将读取一个作为参数提供的文件,然后将其读取为char-by-char(即它支持unicode字符),随后将该字符打印出来。如果这不能实现您的目标,那么输入失败的特定(小)示例就会很好。

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 ();
         }
      }
   }
}

答案 1 :(得分:0)

打印是指this?然后尝试将所有\ t替换为例如使用新的drawString调用4个空格和\ n。

另一种可能性是填充JTextComponent或JEditorPane并打印它。

如果您的意思是正常的系统输出打印,那么请参阅RTBarnard的答案+使用:

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

这在我眼里更容易,你将始终使用正确的编码

答案 2 :(得分:-1)

FileUtils.readFileToString(file)应该(来自commons-io),但要注意较大的文件,因为它们可能会占用为VM分配的整个内存。

您可以使用的另一件事是IOUtils.copy(new FileInputStream(..), outputStream); - 这会将所有内容从一个流(本例中为文件流)转移到另一个输出流。