Hes*_*sam 35 android file-rename
在我的应用程序中,我需要录制视频.在开始录制之前,我正在为其分配名称和目录.录制完成后,用户可以重命名他的文件.我写了下面的代码,但似乎不起作用.
当用户输入文件名并单击按钮时,我会这样做:
private void setFileName(String text) {
String currentFileName = videoURI.substring(videoURI.lastIndexOf("/"), videoURI.length());
currentFileName = currentFileName.substring(1);
Log.i("Current file name", currentFileName);
File directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), MEDIA_NAME);
File from = new File(directory, "currentFileName");
File to = new File(directory, text.trim() + ".mp4");
from.renameTo(to);
Log.i("Directory is", directory.toString());
Log.i("Default path is", videoURI.toString());
Log.i("From path is", from.toString());
Log.i("To path is", to.toString());
}
Run Code Online (Sandbox Code Playgroud)
文本:是用户输入的名称.当前文件名:是我在记录MEDIA_NAME之前分配的名称:文件夹名称
Logcat显示了这个:
05-03 11:56:37.295: I/Current file name(12866): Mania-Karaoke_20120503_115528.mp4
05-03 11:56:37.295: I/Directory is(12866): /mnt/sdcard/Movies/Mania-Karaoke
05-03 11:56:37.295: I/Default path is(12866): /mnt/sdcard/Movies/Mania-Karaoke/Mania-Karaoke_20120503_115528.mp4
05-03 11:56:37.295: I/From path is(12866): /mnt/sdcard/Movies/Mania-Karaoke/currentFileName
05-03 11:56:37.295: I/To path is(12866): /mnt/sdcard/Movies/Mania-Karaoke/hesam.mp4
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
Nir*_*jan 48
在你的代码中:
不应该是:
File from = new File(directory, currentFileName);
代替
File from = new File(directory, "currentFileName");
为了安全起见
使用File.renameTo().但在重命名之前检查目录是否存在!
File dir = Environment.getExternalStorageDirectory();
if(dir.exists()){
File from = new File(dir,"from.mp4");
File to = new File(dir,"to.mp4");
if(from.exists())
from.renameTo(to);
}
Run Code Online (Sandbox Code Playgroud)
参考:http: //developer.android.com/reference/java/io/File.html#renameTo%28java.io.File%29
COD*_*BOY 19
问题出在这一行,
File from = new File(directory, "currentFileName");
Run Code Online (Sandbox Code Playgroud)
这里currentFileName实际上是一个你不必使用的String"
试试这种方式,
File from = new File(directory, currentFileName );
^ ^ //You dont need quotes
Run Code Online (Sandbox Code Playgroud)
使用此方法重命名文件.该文件from将重命名为to.
private boolean rename(File from, File to) {
return from.getParentFile().exists() && from.exists() && from.renameTo(to);
}
Run Code Online (Sandbox Code Playgroud)
示例代码:
public class MainActivity extends Activity {
private static final String TAG = "YOUR_TAG";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File currentFile = new File("/sdcard/currentFile.txt");
File newFile new File("/sdcard/newFile.txt");
if(rename(currentFile, newFile)){
//Success
Log.i(TAG, "Success");
} else {
//Fail
Log.i(TAG, "Fail");
}
}
private boolean rename(File from, File to) {
return from.getParentFile().exists() && from.exists() && from.renameTo(to);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
/**
* ReName any file
* @param oldName
* @param newName
*/
public static void renameFile(String oldName,String newName){
File dir = Environment.getExternalStorageDirectory();
if(dir.exists()){
File from = new File(dir,oldName);
File to = new File(dir,newName);
if(from.exists())
from.renameTo(to);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74248 次 |
| 最近记录: |