java - 读取/写入文件时出现异常

标签 java android inputstream android-contentprovider bufferedreader

我有两个 android 应用程序,一个应用程序在从其他应用程序接收数据后访问其他应用程序的内容提供者以访问某些文件。我尝试将其写入文件但出现异常。

下面是我的代码

private String getLog(String logFile)
{
    try {
        Uri fileUri = Uri.parse("content://" + AUTHORITY + "/" + logFile);
        ParcelFileDescriptor logFilePath = ControlApplication.getControlApplicationContext()
            .getContentResolver().openFileDescriptor(fileUri, "r");
        InputStream fileIs = new FileInputStream(logFilePath.getFileDescriptor());
        InputStreamReader tmp = new InputStreamReader(fileIs);
        BufferedReader reader = new BufferedReader(tmp);
        String str;
        StringBuffer buf = new StringBuffer();
        while ((str = reader.readLine()) != null) {
            buf.append(str + "\n");
        }
        fileIs.close();
        FileOutputStream outstream = ControlApplication.getControlApplicationContext()
            .openFileOutput(logFile, Context.MODE_PRIVATE);
        outstream.write(buf.toString().getBytes());
        outstream.close();

    }
    catch (Exception e) {
        Maas360Logger.e(loggerName, e, "Exception occured");
    }

    return logFile;
}

这里,logFile 是其他应用程序中已经存在的日志文件。我试图通过我的内容提供商获取此文件。

reader 读取时抛出以下异常,即使我没有创建重复目录:

01-03-2016 19:03:48.265 | E | AsyncTask #9 | DiagnosticServices | Exception occured
java.io.IOException: read failed: EISDIR (Is a directory)

Caused by: read failed: EISDIR (Is a directory)
at libcore.io.IoBridge.read(IoBridge.java:482)
at java.io.FileInputStream.read(FileInputStream.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:231)
at java.io.BufferedReader.fillBuf(BufferedReader.java:145)
at java.io.BufferedReader.readLine(BufferedReader.java:397)

最佳答案

这里的问题是您试图在目录上readLine

打印出 "content://"+ AUTHORITY + "/"+ logFile 的值并确保这是您打算阅读的内容。

您还可以验证这是一个像这样的目录:

File folder = new File("content://" + AUTHORITY + "/" + logFile");
boolean isDir = folder.isDirectory();

如果你想看看你应该在这个目录中打开哪些文件,试试this answer .

关于java - 读取/写入文件时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577393/

相关文章:

Java:关于 JLS 中解释的 Java 关键字 "volatile"的混淆

java - ZXing 2.0发布与在线ZXing解码器有什么不同吗?

Android studio 鼠标有时不工作?

java - Java读取内容时如何指定资源中文件的路径

Java:错误:变量可能尚未初始化

java - 如何用ant自动更新几十个mercurial仓库?

android - 如何在andengine on android中实现 "slow motion"效果

android - Android WebView 上的上下文菜单

Java 输入流被阻塞

java - 不太明白 InputStream.read( byte[], int, int ) 是如何工作的