android新人在线求教如何用tm-extractors-0.4读取word文档

woyaoxueanzhuo2011 2011-03-09 03:49:12
各位大哥帮帮忙吧!
下列程序用java已经成功运行了,可以读出word文件并显示:

package assets;

import java.io.File;
import java.io.FileInputStream;
import org.textmining.text.extraction.WordExtractor;
public class WordReader {

public static String readDoc(String doc) throws Exception {
// 创建输入流读取doc文件
FileInputStream in = new FileInputStream(new File(doc));
WordExtractor extractor = null;
String text = null;
// 创建WordExtractor
extractor = new WordExtractor();
// 对doc文件进行提取
text = extractor.extractText(in);
return text;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
String text = WordReader.readDoc("E:/Strust.doc");
System.out.println(text);
}catch(Exception ex){
ex.printStackTrace();
}
}
}

但是如果在android中运行,怎么写WordReader.readDoc("E:/Strust.doc");
这个路径呢?如果写成绝对路径,在手机里面是没有意义的。现在求教如何写成相对路径?
我的Strust.doc放在项目的assets文件夹下。
...全文
614 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
guobihai123 2012-04-26
  • 打赏
  • 举报
回复
楼主,如果word文档中 有图片,如何读取图片呢?
dd3978268 2011-07-26
  • 打赏
  • 举报
回复
请问下楼主有没什么好办法打开和编辑word文档啊?界面能够强大点的插件也行,怎么使用?
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
我刚刚把这个写了一个文档,你可以去看一下效果,代码就那些,具体报错信息还得看log日志。

http://blog.csdn.net/huweilong1030/archive/2011/03/12/6242666.aspx
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
只有看日志才能解决问题了

我这边已经操作成功了:

private TextView text;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

text = (TextView) findViewById(R.id.text);

String str = readWord(Environment.getExternalStorageDirectory().getAbsolutePath() + "/baojingong.doc");
text.setText(str.trim().replace("\r", ""));
}

public String readWord(String file){
// 创建输入流读取doc文件
FileInputStream in;
String text = null;
try {
in = new FileInputStream(new File(file));
WordExtractor extractor = null;
// 创建WordExtractor
extractor = new WordExtractor();
// 对doc文件进行提取
text = extractor.extractText(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return text;
}

就这些代码,文件放在模拟器sd卡的根目录,读出来的效果如下:
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
打开DDMS,里面有个LogCat,
选择后点击logv即可看到运行时所以的日志,
然后点击logcat的右上方那个带圈圈的E,就可以把错误信息过滤出来了
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
控制台这里没有报错,如下:
[2011-03-12 09:38:55 - Search06] Android Launch!
[2011-03-12 09:38:55 - Search06] adb is running normally.
[2011-03-12 09:38:55 - Search06] Performing go.read.ReadTxt activity launch
[2011-03-12 09:38:55 - Search06] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'gogooooSearch'
[2011-03-12 09:38:58 - Search06] Application already deployed. No need to reinstall.
[2011-03-12 09:38:58 - Search06] Starting activity go.read.ReadTxt on device emulator-5554
[2011-03-12 09:39:01 - Search06] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=go.read/.ReadTxt }
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
楼上,我加入/之后,代码如下:
text = wordReader.readDoc(Environment.getExternalStorageDirectory().getAbsolutePath() + "/t.doc")
它和
text = wordReader.readDoc("/mnt/sdcard/t.doc");
是一个效果,报错如下:
sorry,
The application ReadText(process go.read)has stopped unexpectedly.Please try again.
楼上,请问错误日志去哪里找啊?
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
如果还是报错,你就把log日志贴出来,看报的什么错!
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
路径里面少了“/”

Environment.getExternalStorageDirectory().getAbsolutePath() 得出的路径是 “/sdcard”

所有整个路径应该是 Environment.getExternalStorageDirectory().getAbsolutePath()+“/t.doc”
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
求大侠指点!
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
我用text = wordReader.readDoc("/mnt/sdcard/t.doc");这样读取的时候,报错,异常终止了,是不是还是jar包冲突啊。是不是tm-extractors-0.4在android中还是不能用?
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 huweilong1030 的回复:]
楼主用的是真机还是模拟器?

如果是真机,直接放到真机的跟目录即可

如果是模拟器,打开DDMS,在File Explorer中有sdcard文件夹,有些版本在的sdcard在mnt文件夹下,
然后在又上方,有个向右的箭头,点击将文件添加即可
(添加的时候注意:1、文件名不能有中文字;2、如果添加不进去,可能sdcard没有权限,在adb命令下,用chmod 777 命令修改权限)
……
[/Quote]

楼上huweilong1030大哥,我按照你的方法,打开了file Explorer把文件t.doc成功加入了sdcard目录,但是用如下代码运行结果没有显示任何的东西,不知道错在哪里:
String text = null;
WordReader wordReader = new WordReader();
try {
text = wordReader.readDoc(Environment.getExternalStorageDirectory().getAbsolutePath() + "t.doc");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



TextView tv = (TextView) findViewById(R.id.myTextView);
// tv.setText(text);
tv.setText(text);
}
鄙人姓胡 2011-03-12
  • 打赏
  • 举报
回复
我用的2.2的版本
这个错误信息是因为第三方jar包没有找到,可能楼主导包方式出错了

在Eclipse里面右键点你的项目选择properties,然后选择library,点击你需要添加的jar包,加进去编译应该就可以了

我是用这种方式添加的jar包,你试一下,可以肯定的是jar导入出错了!
woyaoxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
我的错误日志是这样的:
03-12 07:59:13.568: ERROR/dalvikvm(3378): Could not find class 'org.textmining.text.extraction.WordExtractor', referenced from method com.word.read.WordReader.readWord
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
楼上,我去看了你的空间,复制过来的代码运行了之后还是强制关闭。你用的是android3.0吗?
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
楼上,怎么看log日志?
woxiangxueanzhuo 2011-03-12
  • 打赏
  • 举报
回复
楼上的老兄,我以前代码和你的差不多,运行之后还是强制关闭。
你用的是android3.0吗?
DrSmart 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 drsmart 的回复:]
如果2.2以前/sdcard/drsmart.doc
2.2或以后/mnt/sdcard/drsmart.dc
[/Quote]

我的意思是你把drsmart.doc放到你sd卡根目录,
woxiangxueanzhuo 2011-03-11
  • 打赏
  • 举报
回复
sd卡的文件夹在哪里啊?
woxiangxueanzhuo 2011-03-11
  • 打赏
  • 举报
回复
sd卡怎么读取啊?大哥给个步骤行吗?
加载更多回复(17)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧