从谷歌驱动器读取word文件时获取特殊字符

时间:2018-05-29 14:33:20

标签: android file google-drive-api uri

我正在尝试将google驱动器word文件本地存储到设备中。下面的代码可以做到这一点,但对于某些(.doc)word文件获取特殊/ ascii字符。

    InputStream inputStream = mActivity.getContentResolver().openInputStream(uri);
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            inputStream));
    StringBuilder stringBuilder = new StringBuilder();
    String line;
    // FileInputStream fis;
    // fis = ((Activity)mActivity).openFileInput("test.txt");

    mTempFile = File.createTempFile("file", ".doc");
    FileOutputStream fos = new FileOutputStream(mTempFile);
    // FileOutputStream fos = ((Activity)mActivity).openFileOutput("resume.doc", Context.MODE_PRIVATE);
    while ((line = reader.readLine()) != null) {
        stringBuilder.append(line);
    }
    fos.write(stringBuilder.toString().getBytes());
    fos.flush();
    fos.close();
    reader.close();

某些文件已正确读取,但有些文件未正确读取。 我的目的是将文件下载到设备并使用REST API作为Multipart文件将其发送到服务器。

非常感谢任何避免特殊性格的帮助。

1 个答案:

答案 0 :(得分:1)

请勿使用(缓冲)读卡器。

不要使用readLine()。

不要使用StringBuilder。

它们仅用于纯文本文件。 .doc不是纯文本。

取消他们。

只需循环读取输入流中的一大块字节,然后直接将它们保存到文件输出流中。