FileUtils.readFileToString IOException

时间:2015-07-23 21:54:08

标签: java android fileutils

我是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" />

2 个答案:

答案 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异常。