我是Android应用程序开发的新手。目前,我正在尝试获得Android下载文件夹路径并将其记录下来。为此,我使用commons库。我有这样的代码:
File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
Log.e("files", folder.listFiles().length + " items");
try {
String DFOLDER = FileUtils.readFileToString(folder);
Log.i(TAG2, DFOLDER);
}catch (IOException e){
Toast.makeText(getApplicationContext(), R.string.fail,
Toast.LENGTH_SHORT).show();
}出于某种原因,我每次都会得到IOException,但是我从第2行收到文件夹中的文件数量。
我在舱单上有这个权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />发布于 2015-07-23 22:20:07
FileUtils.readFileToString将文件的内容读入字符串。Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)返回一个目录,而不是一个文件,因此使用readFileToString会抛出一个IOException。如果要读取下载目录中所有文件的内容,请执行类似的操作。
File folder = Environment.getExternalStoragePublicDirectory(Environmeng t.DIRECTORY_DOWNLOADS);
for(File file:folder.listFiles()){
try {
String DFOLDER = FileUtils.readFileToString(file);
Log.i("File Contents ", DFOLDER);
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Failed!", Toast.LENGTH_SHORT).show();
}
}如果该目录中有太多的文件,它可能会抛出一个OutOfMemoryError。
编辑:如果您需要文件夹的路径,请使用
File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
Log.i("Folder Path",folder.getAbsolutePath());发布于 2015-07-23 22:14:40
根据CommonsIO2.4API,readFileToString方法将以文件作为参数,然后将文件内容读入字符串。但是,getExternalStoragePublicDirectory方法返回一个文件夹而不是一个文件,因此调用readFileToString将引发IO异常。
https://stackoverflow.com/questions/31598723
复制相似问题