0

私の 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

理由はありますか?

4

1 に答える 1

0

buffer.toString()そのクラスのデフォルトの実装を使用するため、正しくありません。

代わりにこれを使用する必要があります。

String init = new String(buffer);

于 2013-07-05T19:36:18.207 に答える