【发布时间】:2016-07-16 11:58:55
【问题描述】:
我正在将一个 txt 文件读入一个字符串缓冲区并使用 OutputStreamWriter 将内容写入一个 word 文档。
问题是文档中没有保留格式。空格和换行符不会像在文本文件中那样保留。 txt 文件的格式正确,包含空格、分页符和制表符。我想在word文档中复制txt。请建议如何保留相同的格式。该文件的链接是:http://s000.tinyupload.com/index.php?file_id=09876662859146558533。
这是示例代码:
private static String readTextFile() {
BufferedReader br = null;
String content = null;
try {
br = new BufferedReader(new FileReader("ORDER_INVOICE.TXT"));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
sb.append(System.lineSeparator());
}
content = sb.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return content;
}
private static void createDocument(String docName, String content) {
FileOutputStream fout = null;
try {
fout = new FileOutputStream(docName);
OutputStreamWriter out = new OutputStreamWriter(fout);
out.write(content);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
OutputStreamWriter 是如何写入“Word”文档的?您是在使用创建 Microsoft Word 文档的库,还是只是为文件提供 .DOC 扩展名?
-
首先,您正在将所有行读入 StringBuilder,但没有重新添加换行符。 readLine() 返回不带回车或换行符的字符串。所以试试 sb.append(line);其次是 sb.append('\n');
-
public String readLine() throws IOException 读取一行文本。一行被认为是由换行符 ('\n')、回车符 ('\r') 或紧跟换行符的回车符中的任何一个终止的。返回:包含行内容的字符串,不包括任何行终止字符,如果已到达流的末尾,则返回 null
-
线条仍然不同。该行进一步分成不同的行,内容转到下一行,这是文本文件中的单行。
标签: java bufferedreader filewriter