【问题标题】:getting special characters when reading word file from google drive从谷歌驱动器读取word文件时获取特殊字符
【发布时间】:2018-05-29 14:33:20
【问题描述】:

我正在尝试将 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 文件将其发送到服务器。

非常感谢任何避免特殊字符的帮助。

【问题讨论】:

  • mTempFile = File.createTempFile("file", ".doc"); ???这怎么能行? mTempFile.getAbsolutePath() 的值是多少?
  • mTempFile.getAbsolutpath 的值为:/data/user/0/com.care.android.careview.debug/cache/filee642208189.doc

标签: android file google-drive-api uri


【解决方案1】:

不要使用(缓冲)阅读器。

不要使用 readLine()。

不要使用 StringBuilder。

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

干掉他们。

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

【讨论】:

  • 谢谢'greenapps'。你的建议解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2020-05-21
  • 2019-05-06
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2018-05-30
相关资源
最近更新 更多