2

目前,我有以下代码用于保存 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

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

4

1 回答 1

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();
        }
于 2013-09-06T03:52:54.303 回答