如何在安卓手机中读取内部存储的文件?

3

我在安卓中使用FileOutputStreamHttpConnection下载了一个文件,现在它被写入到手机的内部存储器中,并且路径如下所示:

/data/data/com.example.packagename/files/123.ics

现在,我想要从手机的内部存储器中打开并读取文件内容到UI。我尝试使用FileInputStream来实现,但是我不确定如何指定内部存储器中的文件路径,因为这会导致应用程序崩溃。

有什么建议吗?


以下是我的操作:

try
{               
  FileInputStream fileIn;       
  fileIn = openFileInput("123.ics");
  InputStream in = null;
  EditText Userid = (EditText) findViewById(R.id.user_id);
  byte[] buffer = new byte[1024];
  int len = 0;
  while ( (len = in.read(buffer)) > 0 )         
  {     
     Userid.setText(fileIn.read(buffer, 0, len));
  }                    
  fileIn.close();                       
} catch (FileNotFoundException e)
{
   e.printStackTrace();
}
catch (IOException e)
{   
    e.printStackTrace();
}

@rob,你在哪里初始化InputStream?从你的代码中我可以看到它被设置为null。 - Waqas
你应该保存到外部存储器,这样就不会让用户的空间用尽,但你需要获得相应的权限。 - CrackerJack9
3个回答

6
String filePath = context.getFilesDir().getAbsolutePath();//returns current directory.
File file = new File(filePath, fileName);

Similar post here 

从手机存储器中读取文件


4
如果文件确实位于你所说的位置,并且你的应用程序是 com.example.packagename,那么调用 openFileInput("123.ics"); 将返回你所需的文件的 FileInputStream
或者,调用 getFilesDir() 来获取指向 /data/data/com.example.packagename/filesFile 对象,并从那里开始操作。

@rob,请编辑您的原始问题以添加此信息,而不是在评论中发布。另外,请添加您的堆栈跟踪。 - Mark B
@mbaird,我该如何添加堆栈跟踪? - rob
为什么会这么安静,我被困住了。有什么建议吗? - rob

-2
我正在使用这段代码来打开内部存储中的文件。我认为它可能会有所帮助。
File str = new File("/data/data/com.xlabz.FlagTest/files/","hello_file.xml");

3
不同的手机使用不同的存储区域,您应该使用API确定正确的位置。搜索数据存储。 - CrackerJack9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接