使用java

时间:2015-11-23 11:09:51

标签: java android

我正在创建一个应用程序,我正在从内部存储中存在的文件中读取内容并在应用程序中显示。 我正在桌面上创建一个文件,并使用usb cable将该文件传输到移动设备。如果存在sdcard,文件将存储在SD卡中,并且为了访问该文件,我找到了以下代码,它对我有效。

File  path = Environment.getExternalStorageDirectory();

/storage/sdcard0/Filename.txt是我运行上述代码时得到的路径。如果文件出现在sdcard中,则返回true,否则为false。

如果sdcard不存在,当我将文件从桌面传输到移动设备时,它会存储在内部存储中。在这种情况下,我如何访问我的文件。 在某些情况下,我已经知道sdcard0是内部存储而不是外部存储。

在移动设备的内部存储中找到文件的最佳方式是哪种,而不是应用程序内部存储。请帮忙。 提前致谢

1 个答案:

答案 0 :(得分:1)

要查找应用内部存储的路径,您可以使用以下命令:

Context context = getApplicationContext(); 
or
Context context = getApplication(); 

String dir = context.getFilesDir().getAbsolutePath();
String dir = context.getFilesDir().getPath(); 

getFilesDir()返回一个File对象,您可以从那里获取路径。然后,您可以使用该路径传输文件。另见下文。

有关如何将文件写入内部存储的信息,请参阅here;有关获取内部存储路径的信息,请参阅here

以下代码为您提供内部存储中文件的路径,然后您可以打开它:

String yourFilePath = context.getFilesDir() + "/" + "filename";
File yourFile = new File( yourFilePath );

您还可以使用here

中说明的以下方法
StringBuffer fileContent = new StringBuffer("");
FileInputStream fis = context.openFileInput(filename);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) != -1) {
    fileContent.append(new String(buffer));
}

上述解决方案打开使用上下文提供的文件名的输入流,该上下文给出了文件存储在内部存储中的位置。在while循环中,它从每个迭代器读取输入流(最大为缓冲区大小),并将读取数据添加到StringBuilder实例。当输入流中读取数据的长度为-1时,循环终止。

如果找不到该文件,将通过openFileInput(filename)方法抛出FileNotFoundException。