2016-08-04 107 views
0

我试图从Android上的特定文件夹读取特定文件,然后将其读入SQLite数据库。当我从资产文件夹中抓取它时,读入数据库工作正常(但是这对于最终版本不起作用,因为文件将在时间上改变)。但是,我遇到了文件没有找到实际访问文件的问题。Android选择特定的文件位置

在设备上,该文件的路径显示为“/ storage/emulated/0/Wellpro”,文件名为“orfice.txt”。

目前我的代码来访问该文件从大约3或4个不同的来源扔在一起,因为我没有找到任何具体的东西。

 String fileName = "/storage/emulated/0/Wellpro/orfice.txt"; 
     String path = Environment.getExternalStorageDirectory()+fileName; 
     InputStream is = new FileInputStream(path); 
     BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

任何帮助将不胜感激。

感谢。

回答

1

getAbsolutePath()给你SD卡的完整路径。

尝试

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// check if file path exist then read the file 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 
+0

该文件没有坐在SD卡的路径中。它坐在一个文件夹中。 此外,我不知道这是否会改变的事情,但它不是在SD卡persay。它位于内部存储器上,但任何应用程序均可访问该存储器。虽然,据我所知,它被视为外部存储无论如何。 – Mitchell

+0

我没有完全得到你。如果它能帮助你理解,那就很开心 – Kathi

+0

该文件坐在名为“Wellpro”的文件夹中。所以,我需要首先进入该文件夹哪个去SD卡路径不会我不会想到? – Mitchell

0

你的第一个错误是,文件名应该是 “orfice.txt” 因为Environment.getExternalStorageDirectory()为您提供了路径。按照@ Kathi的解决方案,这是很好的。

如果您仍然遇到问题,请确保您添加了访问外部存储所需的适当权限。如果您是一个API < 23个发展中,添加到Android清单以下权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

如果您是API = 23个发展中,应要求在运行时的权限。请查询https://developer.android.com/training/permissions/requesting.html了解更多关于如何操作的信息。

+0

好吧,我会将“/ storage/emulated/0/Wellpro /”放入getExternalStorageDirectory,比如getExternalStorageDirectory(“/ storage/emulated/0/Wellpro /”)?? – Mitchell

+0

不,你应该使用 File file = new File(Environment.getExternalStorageDirectory()。getAbsolutePath()+“/Wellpro/orfice.txt”); 注:外部存储器是您的板载闪存的一部分。 –

+0

最好在没有getAbsolutePath()的情况下使用Environment.getExtrenalStorageDirectory() –