我是Android应用开发的新手。目前,我正在尝试获取Android下载文件夹路径并将其记录下来。要做到这一点,我使用commons io库。我有这个代码:
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,但是我从第二行收到文件夹中的文件数量。
我已在manifest
中获得此权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 0 :(得分:1)
FileUtils.readFileToString将文件内容读入String。 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());
答案 1 :(得分:0)
根据Commons IO 2.4 API,readFileToString方法将文件作为参数,然后将文件内容读入String。但是,getExternalStoragePublicDirectory方法返回文件夹而不是文件,因此调用readFileToString将引发IO异常。