2013-03-14 105 views
2

我使用FileInputStream对象读取文件时出现问题。 我想打开的文件存在(我使用相同的应用程序创建了它,并且可以使用设备上的文件管理器查看它)。 是这样的方法:无法打开FileInputStream

public String readFile(String name) { 
    try { 
     FileInputStream fis; 
     String res = "", read; 
     File tmp = new File(directory, name); 
     fis = new FileInputStream(tmp); 

     InputStreamReader isr = new InputStreamReader(fis); 
     BufferedReader buffered_reader = new BufferedReader(isr); 

     read = buffered_reader.readLine(); 
     while (read != null) { 
      res = res + read; 
      Log.i("AAAAAAAAAAAAAAAAA", "letto"+read); 
      read = buffered_reader.readLine(); 
     } 
     isr.close(); 
     fis.close(); 
     return res; 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Log.i("AAAAAAAAAA", "Letto un cazzo"); 
    return null; 
} 

凡目录变量声明为:

private static File directory; 

存储应用程序目录的静态对象文件。 问题在哪里?

logcat的说,

打开失败ENOENT(没有这样的文件或目录)

上排

fis = new FileInputStream(tmp); 
+0

是你的文件名/位置/分机ok? – stinepike 2013-03-14 20:46:23

+0

当然,同一个班级使用相同的变量作为写入文件 – giozh 2013-03-14 20:50:27

+0

添加必要权限的功能? – stinepike 2013-03-14 20:54:36

回答

0

打开失败ENOENT(没有这样的文件或目录)

我的建议是解决它作为

FileInputStream fis; 
File tmp = new File(directory, name); 
if (tmp.exists() && tmp.isFile()) { 
    fis = new FileInputStream(tmp); 
    InputStreamReader isr = new InputStreamReader(fis); 
    BufferedReader buffered_reader = new BufferedReader(isr); 
    // next lines ... 
} 
else { 
    // error 
} 

所以没有办法如何使其发挥作用。您需要传递正确的FILE_PATH或者它不起作用。同时检查你是否有读写权限。

+0

在logcat上显示该路径为/ storage/emulated/0/Appname/filename。 我不知道什么是模拟/ 0/ – giozh 2013-03-14 20:59:26

1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+0

仍然不行! – giozh 2013-03-14 21:19:42

0

FileInputStream openFileInput(String nameOfFile)

打开与此上下文的应用程序包进行读取相关的私人文件。

来自Api。我用过它,没有问题。