0

タイムスタンプを名前として使用してファイルを保存しようとしています。自分で名前を付けても問題なくファイルを保存できますが、タイムスタンプを使用しようとすると機能しません。これは私のコードです:

        Long tsLong = System.currentTimeMillis()/1000;
        String ts = tsLong.toString();

        File newxmlfile = new File(Environment.getExternalStorageDirectory()
                 + ts);
        try {
            newxmlfile.createNewFile();
        } catch (IOException e) {
            Log.e("IOException", "exception in createNewFile() method");
        }

        FileOutputStream fileos = null;
        try {
            fileos = new FileOutputStream(newxmlfile);
        } catch (FileNotFoundException e) {
            Log.e("FileNotFoundException", "can't create FileOutputStream");
        }

誰もこれを行う方法を知っていますか?

EDIT(解決済み):以下の行を変更し、タイムスタンプを使用してファイルをxmlファイルとして保存しました。

File newxmlfile = new File(Environment.getExternalStorageDirectory()
                 ,ts + ".xml");
4

1 に答える 1

5

無効なパスでファイルを作成していると思います。

文字列連結を行う場合:

Environment.getExternalStorageDirectory() + ts

...タイムスタンプ123456をファイルパスに追加します(のようなもの)/mnt/sdcard。そして、次のような無効なパスになります。

/mnt/sdcard14571747181

(そして、そのファイルは外部ディレクトリ内にないため、そのファイルに書き込むアクセス権がありません。)

自分でファイル区切りを追加するか、次のようにファイルを作成します。

File newxmlfile = new File(Environment.getExternalStorageDirectory(), ts);
                                                                    ^^
                                                                the change
于 2013-03-06T14:02:27.133 に答える