资产返回乱码?

时间:2013-07-05 19:36:18

标签: android bytearray

在我的Android应用中,我正在提取资产文本文件,然后将其复制到系统位置。

但是,文字会像字符一样乱码!

代码如下:

final ProgressDialog initdrunning = new ProgressDialog(
                                            MainActivity.this);
                                    initdrunning.setTitle("Please wait...");
                                    initdrunning
                                            .setMessage("Working, please wait...");
                                    initdrunning.setCancelable(false);
                                    initdrunning.show();
                                    AssetManager assets = getAssets();

                                    try {
                                        InputStream input = assets
                                                .open("30clearlog.txt");
                                        int size = input.available();

                                        byte[] buffer = new byte[size];
                                        input.read(buffer);
                                        input.close();

                                        String init = buffer.toString();

                                        initfile = File.createTempFile(
                                                "30clearlog", "");

                                        FileWriter writer = new FileWriter(
                                                initfile);
                                        writer.write(init);
                                        writer.close();

                                        Log.d("message", buffer.toString());

                                    } catch (IOException e) {
                                        e.printStackTrace();
                                        Toast.makeText(getBaseContext(),
                                                "Unable to extract script :(",
                                                Toast.LENGTH_SHORT).show();
                                    }
                                    Thread initd = new Thread() {

                                        @Override
                                        public void run() {
                                            super.run();
                                            Shell.SU.run("mount -o remount,rw /system");
                                            Shell.SU.run("cp "
                                                    + initfile
                                                            .getAbsolutePath()
                                                    + " /system/etc/init.d/90clearlog");

                                            initdrunning.cancel();

                                        }
                                    };

                                    initd.start();
                                }
                            });

文件中的文字只是test,但在我的设备上最终为[B@416fa200

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

buffer.toString()不正确,因为它使用该类的默认实现。

应改为使用:

String init = new String(buffer);