在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) 个答案