0

こんにちは私は書き込みファイルの以下のコードを持っています、それはaとbファイルを読み取りそしてab.xmlファイルにデータを入れます

   String filePath1 = "/sdcard/Dictionarys/a.txt";
String filePath2 = "/sdcard/Dictionarys/b.txt";
String filePath3 = "/sdcard/Dictionarys/ab.xml";


        try {

        File file = new File(filePath3);
        file.createNewFile();

        BufferedReader br1 = new BufferedReader(new InputStreamReader(
                new FileInputStream(filePath1), UTF8), BUFFER_SIZE);

        BufferedReader br2 = new BufferedReader(new InputStreamReader(
                new FileInputStream(filePath2), UTF8), BUFFER_SIZE);
        FileOutputStream file3 = new FileOutputStream(filePath3);
        OutputStreamWriter out3 = new OutputStreamWriter(file3,UTF8);
        BufferedWriter br3 = new BufferedWriter(out3, BUFFER_SIZE);

        String sCurrentLine1, sCurrentLine2;

        while ((sCurrentLine1 = br1.readLine()) != null && ((sCurrentLine2 = br2.readLine())!=null)) {
            String s3 = sCurrentLine2.substring(sCurrentLine1.length());
            br3.write("<abcd abc=\""+sCurrentLine1+"\" def=\""+s3.trim()+"\"/> \n");
            br3.flush();
            i++;
        }
        br3.write("<data>\n");
        br3.flush();
        br3.close();
        out3.flush();
        out3.close();
        file3.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

ただし、xmlファイルはSDCARDパスに作成されません。

4

2 に答える 2

2

この方法でパスを取得してみてください:

 Environment.getExternalStorageDirectory()

文字列パスが機能しない場合があるため、マニフェストに次のアクセス許可が追加されていることを確認してください。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2013-02-12T10:41:09.740 に答える
1

まず、 sdcard へのパスをハードコーディングしないでください。これは、電話ごとに変わる可能性があるためです。Context.getExternalFilesDir()orのようなメソッドをgetExternalStoragePublicDirectory(String)代わりに使用します。

次に、一部のファイルシステムにはバッファリングがあります。メソッドを使用fsyncして、実際の書き込みを行う必要があります。詳細については、データの安全な保存を参照してください。

于 2013-02-12T10:45:23.710 に答える