cashisna
2017-12-26 05:29
采纳率: 66.7%
浏览 2.7k

Android studio 中使用java 读取txt 文件, 返回的是空串

各位大神: 如题

在android studio中, 断点看了一下 ,程序没有进 while 循环啊,result 直接是空串了.然后就直接进入 catch了. 但是使用javac 编译, 可以正常打印txt文件中的内容

public static String txtFile(File file) {
StringBuilder result = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
String s = "null";
while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
result.append(System.lineSeparator() + s);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return result.toString();

catch 中的异常提示 : java io fileNotFoundException D:/Fortest/test_doc/testfile.txt: open failed: ENOENT (No such file or directory)

但是本地有这个文件,因为 javac 编译通过了,而且打出了字符串 ,如下 :

但是在本地,使用javac 编译,然后运行,可以正常打印出txt 内容.
D:\test>javac Filedemo.java
D:\test>java Filedemo
Love your parents. We are too busy growing up yet we forget that they are already growing old.
The moment you think about giving up,think of the reason why you held on so long.

如果javac 编译可以通过,那说名程序没有问题啊, studio 环境问题? 求解答.
非常感谢

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • a小飞象 2017-12-26 06:07
    已采纳

    运行到手机上 还用的D盘?

    已采纳该答案
    打赏 评论
  • 我是群主 2017-12-26 05:30

    使用javac 编译,然后运行,可以正常打印出txt 内容

    打赏 评论
  • AstroCsdn博客 2017-12-26 05:36

    打印以下catch里面的异常看一下

    打赏 评论
  • 哈哈哈噶 2017-12-26 06:18

    和权限有关系不,检查下

    打赏 评论
  • 这完全就是路径错误,,,你应该把文件放到手机的sd卡或者项目中(raw或assert文件夹)去

    打赏 评论
  • 书剑飘零-Heize 2017-12-26 06:47

    你能将你这个进程的log全部都发出来吗?
    比如打印的这句:java io fileNotFoundException D:/Fortest/test_doc/testfile.txt: open failed: ENOENT (No such file or directory)

    这句前面一定是有进程ID,把这个ID相关的log都发出来看看。

    打赏 评论
  • Jacky-G 2017-12-26 06:55

    你这个文件路径错了,这个是Linux下面的格式,你应该是在Windows上跑的,路径改成D:\Fortest\test_doc\testfile.txt

    打赏 评论
  • 小小☞钟 2017-12-26 07:04

    我来回答你一下:
    应该是路径问题,因为as程序是要运行在android上的,你android设备上没有这个文件或这个目录,所以就发生了上述异常,
    解决办法就是把你的txt文件放在android设备上,然后找这个路径来读。
    另外你这个之所以能用Javac能得出结果,是因为java虚拟机机是在你的电脑上,所以你运行程序java虚拟机是从的电脑上找文件路径,
    故而能运行成功。
    希望能帮到你

    打赏 评论
  • xiaopgg521 2017-12-26 07:16

    建议你重写读取文件的方法,使用Context类的openFileInput()方法,它只接受一个参数,就是要读取的文件名,然后会自动到/data/data//files/目录
    下去加载这个文件,并返回一个FileInputStream对象,得到这个对象就能用java流方式读取出来了
    FileInputStream in = null;
    BurreredReader reader =null;
    in = openFileInput("参数写文件名");
    reader = new BufferedReader(new InputStreamReader(in));

    打赏 评论
  • qq_15643973 2017-12-26 07:59

    Android 设备使用window 下的盘符路径,软件运行怎么能找得到? 正确使用方法:
    把文件复制到Android设备的存储里,然后读取这个路径下的文件,才能得到数据。

    打赏 评论
  • 变异精灵 2017-12-26 09:16

    1.把文件放到手机的sd卡或者项目中(raw或assert文件夹)去;2.如果不放在项目中就看看file是否正确

    打赏 评论

相关推荐 更多相似问题