Di sini saya telah membuat program Java untuk mengubah nama file teks. Saya belum pernah menggunakan metode renameTo() karena hanya membuat file lain dengan nama yang sama dengan konten kosong. Saya malah membuat dua objek file dan mencoba menyalin konten dari file pertama ke file kedua (membuatnya jika tidak ada) yang berhasil tetapi setelah itu ketika saya harus menghapus file lama itu gagal. Tolong beri tahu saya jawaban apa pun. Berikut seluruh kode sumber.

import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class FileRenamer {
    public static void main(String[] args)   {
        try {
            Scanner inp = new Scanner(System.in);
            System.out.println("Enter the name of the text file to be renamed");
            String oldname = inp.nextLine();
            File oldFile = new File("C:\\Java\\" + oldname + ".txt");
            Scanner reader = new Scanner(new File("C:\\Java\\"+oldname+".txt"));
            System.out.println("Enter the new File name");
            String newname = inp.nextLine();
            File newFile = new File("C:\\Java\\"+ newname + ".txt");
            if (!newFile.exists()){
                newFile.createNewFile();
            }
            oldFile.renameTo(newFile);
            FileWriter newf = new FileWriter("C:\\Java\\"+ newname + ".txt");
            while (reader.hasNextLine()) {
                String rename = reader.nextLine();
                newf.write(rename+"\n");
            }
            newf.flush();
            newf.close();

            if (oldFile.delete()){
                System.out.println("File renamed");
            }
            else {
                System.out.println("File renaming failed");
            }
            
        }catch (Exception e ){
            e.printStackTrace();
        }

    }
}
0
Programmer AHN 10 Mei 2021, 21:08

2 jawaban

Jawaban Terbaik

Anda tidak perlu membuat file baru dan menyalin kontennya. Operasi itu terlalu membosankan. FileRenamer Anda dapat dengan mudah diimplementasikan jika Anda menggunakan kelas Java New IO (dari paket java.nio.file).

Berikut contoh implementasi, hanya untuk memberi Anda gambaran. Saya mengujinya dan berfungsi dengan baik:

import java.nio.file.*;
import java.io.IOException;

import java.util.Scanner;

public class FileRenamer  { 

    public static void main(String ... args) {
        try {
                Scanner inp = new Scanner(System.in);
                System.out.println("Enter the name of the text file to be renamed");
                String oldname = inp.nextLine();
                Path oldFile = Paths.get("C:\\Java", oldname + ".txt");
                
                System.out.println("Enter the new File name");
                String newname = inp.nextLine();
                Path newFile = Paths.get("C:\\Java", newname + ".txt"); 
                
                Files.move(oldFile, newFile, StandardCopyOption.REPLACE_EXISTING);
        }
        catch(IOException ex) {}
    }
}
0
Marco Tizzano 10 Mei 2021, 18:33

Anda telah menginisialisasi OldFile:

File oldFile = new File("C:\\Java\\" + oldname + ".txt");

Kemudian Anda mengganti nama oldFile:

oldFile.renameTo(newFile);

if (oldFile.delete()) masih merujuk ke jalur lama, yang kemudian tidak ada lagi, karena Anda mengganti nama file. (Anda telah membangun jalur lama dengan File oldFile = new File("C:\\Java\\" + oldname + ".txt"); )

1
Dorian Feyerer 10 Mei 2021, 18:20