context.openFileInput()在尝试访问存储文件时返回null

时间:2013-09-06 03:46:53

标签: android android-file

目前,我有以下代码用于保存Web存档,然后将其作为FileInputStream获取。但是,webContent中的通道保持为null并抛出FileNotFoundException:

        // Save the Web Archive once loading is finished
        String path = context.getFilesDir().getAbsolutePath()
                + File.separator + WEB_PREFIX + postId;
        webView.saveWebArchive(path);
        FileInputStream webContent = null;
        try {
            webContent = context.openFileInput(WEB_PREFIX + postId);
        } catch (FileNotFoundException e) {
            Log.d("onPageFinished()", "FileNotFoundException");
            e.printStackTrace();
        }

如果我尝试执行context.openFileInput(path),我会得到

09-05 23:39:42.448: E/AndroidRuntime(8399): java.lang.IllegalArgumentException: File /data/data/com.example/files/web-2189241737372651547 contains a path separator

有谁知道解决方案?该文件肯定存在,因为我将它保存在上一行。

1 个答案:

答案 0 :(得分:4)

openFileInput()不接受路径,如果要访问路径,则只接受文件名。

请改用:

File file = new File(this.getFilesDir().getAbsolutePath() + (WEB_PREFIX + postId));

修改 您需要确保从同一个地方保存和检索文件。放手一搏:

注意:我不确定您是否需要File.separator,但请尝试使用和不使用它,看看哪个有效。

 String path = context.getFilesDir().getAbsolutePath()
                + File.separator + WEB_PREFIX + postId;
        webView.saveWebArchive(path);
        FileInputStream webContent = null;
        try {
            webContent = new File(path);
        } catch (FileNotFoundException e) {
            Log.d("onPageFinished()", "FileNotFoundException");
            e.printStackTrace();
        }