百度找了很多java读取rtf文件内容的案例,都不行,不是读不出来就是乱码,要么就是多了很多编码异常的字符。
最后成功解决,得益于大佬的源码贡献,如下链接:
转载于:http://blog.sina.com.cn/s/blog_65f209a50101opc0.html
本地的rtf文件内容是如下:
我想要的是把文件里的内容处理过滤,剩下冒号前面的字段,所以会用到截取方法。给自己留个笔记,本人不擅长代码,但是擅长留笔记,便于以后参考回忆:
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;
import java.io.*;
import java.util.List;
public class Test {
private static String filePath = "/Users/jojo/Documents/wangyi/严选/txt.rtf";
private static List<Character> buffer;
public static void main(String[] args) throws Exception {
String str=readRtf();
System.out.println("文件原内容:"+str);
// 开始截取字符串并处理成我想要的
String[] Arr = str.split("\n");
for (int i = 0; i < Arr.length; i++) {
String[] temp = Arr[i].split(":");
System.out.println(temp[0]);
}
}
// 读取文件内容的方法
public static String readRtf() {
String result = null;
File file = new File(filePath);
try {
DefaultStyledDocument styledDoc = new DefaultStyledDocument();
InputStream is = new FileInputStream(file);
new RTFEditorKit().read(is, styledDoc, 0);
result = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1"),"GBK");
//注意这边加上GBK即可;
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
运行并读取文件成功: