有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中,我无法更改方法中的文件名

程序运行良好,但文件不变。临时文件是用文件创建的,但无法重命名,原始数据库文件仍然存在。我不知道怎么了

public static void deleteBook() throws IOException{
    File database = new File("database.txt");
    FileReader fr = new FileReader(database);
    BufferedReader br = new BufferedReader(fr);
    
    File tempFile = new File("tempFile");
    FileWriter fw = new FileWriter(tempFile);
    BufferedWriter bw = new BufferedWriter(fw);
    
    String data = br.readLine();
    
    Scanner inputData = new Scanner(System.in);
    System.out.print("Masukkan judul buku : ");
    String deleteString = inputData.nextLine();
    int num = 0;
    ArrayList<Integer> alNum = new ArrayList<>();
    ArrayList<String> alPenulis = new ArrayList<>();
    ArrayList<String> alJudul = new ArrayList<>();
    
    while(data != null) {
            StringTokenizer st = new StringTokenizer(data,",");
            String Penulis = st.nextToken();
            String Tahun = st.nextToken();
            String Penerbit = st.nextToken();
            String Judul = st.nextToken();
        if(Judul.toLowerCase().contains(deleteString.toLowerCase())) {
            num++;
            System.out.println("Buku ditemukan : ");
            System.out.println("---------------------------------------");
            System.out.println("No           : " + num);
            System.out.println("Penulis      : " + Penulis);
            System.out.println("Tahun        : " + Tahun);
            System.out.println("Penerbit     : " + Penerbit);
            System.out.println("Judul        : " + Judul);
            alNum.add(num);
            alPenulis.add(Penulis);
            alJudul.add(Judul);
        }
        data = br.readLine();
    }   
    
    
    if(alPenulis.isEmpty()) {
        System.err.println("Buku tidak ditemukan");
    }
    else {
        if(alPenulis.size() == 1) {
            boolean multiBook= KlikYesorNo("Apakah anda ingin menghapus buku ini ");
            if(multiBook) {
                fr = new FileReader(database);
                br = new BufferedReader(fr);
                data = br.readLine();
                
                while(data != null) {
                    StringTokenizer st = new StringTokenizer(data,",");
                    String Penulis = st.nextToken();
                    st.nextToken();
                    st.nextToken();
                    String Judul = st.nextToken();
                if(!(Penulis.toLowerCase().contains(alPenulis.get(0).toLowerCase()) 
                        && Judul.toLowerCase().contains(alJudul.get(0).toLowerCase()))) {
                    bw.write(data);
                    bw.newLine();
                }
                data = br.readLine();
            }                   
            } else {
                System.err.println("Buku tidak terhapus");
            }
        } else {
            boolean multiBook= KlikYesorNo("Apakah anda ingin menghapus salah satu buku diatas ");
            if(multiBook) {
                inputData = new Scanner(System.in);
                System.out.print("Masukan no buku yang ingin dihapus : ");
                int numBookDelete = inputData.nextInt();
                
                if((numBookDelete < 1) || (numBookDelete > alNum.size())){
                    System.err.println("Anda salah memasukan nomor");
                } else {
                fr = new FileReader(database);
                br = new BufferedReader(fr);
                data = br.readLine();
                
                while(data != null) {
                    StringTokenizer st = new StringTokenizer(data,",");
                    String Penulis = st.nextToken();
                    st.nextToken();
                    st.nextToken();
                    String Judul = st.nextToken();
                if(!(Penulis.toLowerCase().contains(alPenulis.get(numBookDelete - 1).toLowerCase()) 
                        && Judul.toLowerCase().contains(alJudul.get(numBookDelete - 1).toLowerCase()))) {
                    System.out.println(data);
                }
                data = br.readLine();
            }                   
                }
            } else {
                System.err.println("Buku tidak terhapus");
            }
        
        
        }
    
    }
    
    bw.flush();
    
    fr.close();
    br.close();
    fw.close();
    bw.close();
    
    database.delete();
    tempFile.renameTo(database);
}

我还在另一种方法中使用了数据库文件,但一切都进行得很顺利,所有缓冲写入程序/读取程序都已在其他方法中关闭。请帮帮我。谢谢


共 (0) 个答案