如何在java中读取RTF文件时设置格式?

时间:2014-02-19 06:31:31

标签: java swing rtf jeditorpane

我需要用Java读取一些RTF文件。所以我得到的代码最初工作正常。但我的问题是:在阅读这些文件时是否可以设置格式(例如:UTF-8,UTF-16等)?

这里我发布了读取RTF文件的代码:

public static String rtf_read(String fileName) throws Exception, BadLocationException
{
JEditorPane p = new JEditorPane();
p.setContentType("text/rtf");
EditorKit rtfKit = p.getEditorKitForContentType("text/rtf");
rtfKit.read(new FileReader(fileName), p.getDocument(), 1);
rtfKit = null;
// convert to text
EditorKit txtKit = p.getEditorKitForContentType("text/plain");
Writer writer = new StringWriter();
txtKit.write(writer, p.getDocument(), 0, p.getDocument().getLength());
String documentText = writer.toString();
return documentText;
}

2 个答案:

答案 0 :(得分:0)

我相信FileReader正在使用默认编码。幸运的是,read()方法也被重载以处理流 - 对于它们,您可以设置要使用的编码:

rtfKit.read(new FileInputStream(fileDir), StandardCharsets.UTF_8), ...)

答案 1 :(得分:0)

使用以下代码行对我有用:

FileInputStream is = new FileInputStream(rtfFilePath);
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader buffReader = new BufferedReader(isr);
rtfKit.read(buffReader, p.getDocument(), 0);