我想用Java完全按照文本在文本文件中出现的方式打印简单文本文件的内容。
打印输出与文本文件具有相同的内容,但格式不同。打印输出中将忽略制表符和换行符。任何帮助将非常感谢。
答案 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)
; - 这会将所有内容从一个流(本例中为文件流)转移到另一个输出流。