如何在读取文件时保持格式化
问题描述:
我试图将.java文件读入JTextArea,无论使用何种方法读取文件,格式都不会保留。实际的代码是确定的,但评论总是搞砸了。这是我的尝试。如何在读取文件时保持格式化
//Scanner:
//reads an input file and displays it in the text area
public void readFileData(File file)
{
Scanner fileScanner = null;
try
{
fileScanner = new Scanner(file);
while(fileScanner.hasNextLine())
{
String line = fileScanner.nextLine();
//output is a JTextArea
output.append(line + newline);
}
}
catch(FileNotFoundException fnfe)
{
System.err.println(fnfe.getMessage());
}
}
//Scanner reading the full text at once:
//reads an input file and displays it in the text area
public void readFileData(File file)
{
Scanner fileScanner = null;
try
{
fileScanner = new Scanner(file);
fileScanner.useDelimiter("\\Z");
String fullText = fileScanner.next();
//print to text area
output.append(fullText + newline);
}
catch(FileNotFoundException fnfe)
{
System.err.println(fnfe.getMessage());
}
}
//BufferedReader:
//reads an input file and displays it in the text area
public void readFileData(File file)
{
//Scanner fileScanner = null;
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
String line = "";
while((line = reader.readLine()) != null)
{
output.append(line + newline);
}
}
是否有反正保持格式相同?
PS - 张贴于http://www.coderanch.com/t/539685/java/java/keep-formatting-while-reading-files#2448353
猎人
答
使用JTextArea.read(...)方法。
答
这可能是由于var新行被硬编码为'\ n'或类似的东西。尝试定义换行符如下:
String newline=System.getProperty("line.separator");
该解决方案更是“一般”,但如果有一个JTextArea
+0
-1,JTextArea的文档使用“\ n”来表示换行符。在Windows系统上使用line.separator属性将尝试在文本区域附加“\ r \ n”。 “\ r”将被解析出来。 – camickr 2011-05-27 23:45:53
JTextArea.read工作,我会用camickr溶液(...)做几乎完全一样的任何我有过上述的尝试。我最终发现的是JTextArea具有setTabSize()和getTabSize()方法,并通过将setTabSize()更改为更小的数字,我在原始文档中使用的选项卡正常显示。 – 2011-05-31 16:55:51