1

私は Android アプリに取り組んでおり、ファイルの名前を変更したいと考えています。問題は、名前が変更されていないことです。

 File f = adapter.getItem(i);
 File file = new File(f.getAbsolutePath(), "helloworld");
 if (f.renameTo(file)) {
 Toast.makeText(getActivity(), "done", Toast.LENGTH_LONG).show();
 }

ソリューションビッグ@SDに感謝(コメントを参照)

File f = adapter.getItem(i);
     File file = new File(f.getParent(), "helloworld");
     if (f.renameTo(file)) {
     Toast.makeText(getActivity(), "done", Toast.LENGTH_LONG).show();
     }
4

3 に答える 3

1

問題は次のとおりだと思います。

File f = adapter.getItem(i);

File fuse someを与えfますuser2351234/Desktop。次に、次のことを行います。

 File file = new File(f.getAbsolutePath(), "helloworld");

これは、 を作成するようにFile file言いfileますuser2351234/Desktop/helloworld。次に、次を呼び出します。

f.renameTo(file)

これは を に名前変更しようとしますがf、 for が存在するためには存在しなければならないので意味がありませんが、操作によって存在しなくなります。user2351234/Desktopuser2351234/Desktop/helloworlduser2351234/Desktop/helloworlduser2351234/Desktop

私の仮説はその理由ではないかもしれませんが、なぜ File.renameTo(…) は宛先のサブディレクトリを作成しないのですか? 、サブディレクトリが存在しない場合renameTo 返されるようです。false

ファイルの名前だけを変更したい場合は、次のようにします。

File f = adapter.getItem(i);
String file = f.getAbsolutePath() + "helloworld";
f = new File(file);

編集:
私の提案した解決策は機能するはずですが、あなたの方法が機能しない理由についての私の仮説が間違っている場合は、Windows の信頼できる File.renameTo() 代替からこの回答を参照してください。

于 2013-08-04T03:32:35.953 に答える
0

このコードを使用してください。

File sdcard = Environment.getExternalStorageDirectory()+ "/nameoffile.ext" ;
File from = new File(sdcard,"originalname.ext");
File to = new File(sdcard,"newname.ext");
from.renameTo(to);
于 2013-08-04T04:39:01.170 に答える
0

質問 1: 例外が表示されますか、それとも false を返しますか?

質問 2: アプリに SD カードへの書き込みを許可しましたか? (このファイルがある場所だと思います)。追加する権限は"

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

この投稿: How to rename a file on sdcard with Android application? 同様の質問に答えているようです。

于 2013-08-04T03:41:37.220 に答える