【发布时间】:2010-03-25 10:59:45
【问题描述】:
我想在 Java 中打印一个简单文本文件的内容,完全按照文本在文本文件中的显示方式。
打印出来的内容与文本文件相同,但格式不同。打印输出中忽略制表符和换行符。任何帮助将不胜感激。
【问题讨论】:
-
向我们展示您如何阅读它以及如何打印它。否则我们只是猜测。
-
除非你发布一些代码,否则我们无法猜测你做了什么。
我想在 Java 中打印一个简单文本文件的内容,完全按照文本在文本文件中的显示方式。
打印出来的内容与文本文件相同,但格式不同。打印输出中忽略制表符和换行符。任何帮助将不胜感激。
【问题讨论】:
正如@Joachim Sauer 和@bmargulies 所指出的那样,如果没有更多细节,我们无法真正告诉您到底是什么问题。
但是为了给你一些东西来对比你的代码,下面将读取一个作为参数提供的文件,然后逐个字符地读取它(即它支持 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 ();
}
}
}
}
【讨论】:
打印是指this?然后尝试用例如替换所有 \t 4 个空格和 \n 带有新的 drawString 调用。
另一种可能是填写JTextComponent 或JEditorPane 并打印出来。
如果您的意思是正常的系统输出打印,请查看 RTBarnard + 使用的答案:
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileReader("file.txt"), "UTF-8");
reader.readLine(); etc
在我看来这更容易,您将始终使用正确的编码
【讨论】:
FileUtils.readFileToString(file) 应该这样做(来自commons-io),但要小心较大的文件,因为它们可能会占用分配给 VM 的全部内存。
你可以使用的另一个东西是IOUtils.copy(new FileInputStream(..), outputStream); - 这会将所有内容从一个流(在本例中为文件流)传输到另一个输出流。
【讨论】: