2
private void copyMB() {
    AssetManager assetManager = this.getResources().getAssets();
    String[] files = null;
    try {
        files = assetManager.list(assetDir);
    } catch (Exception e) {
        e.printStackTrace();
    }
    for(int i=0; i<files.length; i++) {
        InputStream in = null;
        FileOutputStream fos;
        try {
            in = assetManager.open(assetDir+"/" + files[i]);

            fos = openFileOutput(files[i], Context.MODE_PRIVATE);
            copyFile(in, fos);
            in.close();
            in = null;
            fos.flush();
            fos.close();
            fos = null;
        } catch(Exception e) {
            e.printStackTrace();
        }       
    }
}
private void copyFile(InputStream in, OutputStream out) throws IOException {

    byte[] buffer = new byte[1024];
    int read;

    while((read = in.read(buffer)) != -1){
        out.write(buffer, 0, read);
    }
}

我的问题是 åäö 等 UTF-8 字符被看起来很奇怪的字符所取代。如何确保我的 InputStream 阅读器使用 UTF-8?在普通的 Java 中,写起来很容易…… new InputStreamReader(filePath, "UTF-8"); 但是由于我是从 Asset 文件夹中获取它的,所以我不能这样做(我必须使用不会将“UTF-8”作为参数的assetManager.open() 方法。

有任何想法吗?:)

感谢您的帮助。

4

2 回答 2

4

当你自己写:

new InputStreamReader(in, "UTF-8");

使用 Utf-8 编码创建一个新的流阅读器。只需将其放入copyFile()以您InputStream为参数的方法中即可。

于 2012-04-23T11:20:09.840 回答
0

你也可以这样做:

new InputStreamReader(is, StandardCharsets.UTF_8)
于 2019-02-17T20:19:06.833 回答