webentwicklung-frage-antwort-db.com.de

android, Wie benennt man eine Datei um?

In meiner Anwendung muss ich Video aufnehmen. Bevor ich mit der Aufnahme beginne, weise ich ihr einen Namen und ein Verzeichnis zu. Nach Abschluss der Aufnahme kann der Benutzer seine Datei umbenennen. Ich habe folgenden Code geschrieben, aber es scheint nicht zu funktionieren. 

Wenn der Benutzer den Dateinamen eingibt und auf die Schaltfläche klickt, mache ich folgendes:

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());
    }

Text: ist der Name, der vom Benutzer eingegeben wird ..__ Aktueller Dateiname: ist der Name, den ich vor der Aufnahme vergeben habe

Logcat zeigt das:

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

Jeder Vorschlag wäre dankbar.

31
Hesam

Das Problem ist in dieser Zeile,

File from = new File(directory, "currentFileName");

Hier ist currentFileName ein String, den Sie nicht verwenden müssen "

versuche es so,

File from      = new File(directory, currentFileName  );
                                    ^               ^         //You dont need quotes
17
COD3BOY

In Ihrem Code:

Sollte es nicht sein:

File from = new File(directory, currentFileName);

anstatt von

File from = new File(directory, "currentFileName");


Zur sicherheit,

Verwenden Sie das File.renameTo (). Aber prüfen Sie, ob das Verzeichnis existiert, bevor Sie es umbenennen!

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);
}

Siehe: http://developer.Android.com/reference/Java/io/File.html#renameTo%28Java.io.File%29

43
Niranjan

Verwenden Sie diese Methode, um eine Datei umzubenennen. Die Datei from wird in to umbenannt.

private boolean rename(File from, File to) {
    return from.getParentFile().exists() && from.exists() && from.renameTo(to);
}

Beispielcode:

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);
    }
}
7
Thomas Vos

/**
 * 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);
    }
}
5
taran mahal

Arbeitsbeispiel ...

   File oldFile = new File("your old file name");
    File latestname = new File("your new file name");
    boolean success = oldFile .renameTo(latestname );

   if(success)
    System.out.println("file is renamed..");
2
Xar E Ahmer

Das habe ich am Ende gebraucht. Es behandelt den Fall, in dem eine Datei mit demselben Namen vorhanden ist, indem dem Dateinamen eine Ganzzahl hinzugefügt wird.

@NonNull
private static File renameFile(@NonNull File from, 
                               @NonNull String toPrefix, 
                               @NonNull String toSuffix) {
    File directory = from.getParentFile();
    if (!directory.exists()) {
        if (directory.mkdir()) {
            Log.v(LOG_TAG, "Created directory " + directory.getAbsolutePath());
        }
    }
    File newFile = new File(directory, toPrefix + toSuffix);
    for (int i = 1; newFile.exists() && i < Integer.MAX_VALUE; i++) {
        newFile = new File(directory, toPrefix + '(' + i + ')' + toSuffix);
    }
    if (!from.renameTo(newFile)) {
        Log.w(LOG_TAG, "Couldn't rename file to " + newFile.getAbsolutePath());
        return from;
    }
    return newFile;
}
1
Jon

Geben Sie das Zieldateiobjekt mit einem anderen Dateinamen an.

// Copy the source file to target file.
// In case the dst file does not exist, it is created
void copy(File source, File target) throws IOException {

    InputStream in = new FileInputStream(source);
    OutputStream out = new FileOutputStream(target);

    // Copy the bits from instream to outstream
    byte[] buf = new byte[1024];
    int len;

    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }

    in.close();
    out.close();
}
1

sie sollten prüfen, ob das Verzeichnis existiert!

File directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), MEDIA_NAME);
if(!directory.exist()){
    directory.mkdirs();
}
1
Changwei Yao
    public void renameFile(File file,String suffix) {

    String ext = FilenameUtils.getExtension(file.getAbsolutePath());
    File dir = file.getParentFile();

    if(dir.exists()){
        File from = new File(dir,file.getName());
        String name = file.getName();
        int pos = name.lastIndexOf(".");
        if (pos > 0) {
            name = name.substring(0, pos);
        }
        File to = new File(dir,name+suffix+"."+ext);
        if(from.exists())
           from.renameTo(to);
    }

}
0
twenk11k