Я создал программу, в которой есть файл с именем groups.txt. Этот файл содержит список имен. Чтобы удалить группу, она должна существовать внутри файла. Я использовал метод Scanner для поиска по каждой строке для имени. Если он содержит строку, он устанавливает значение val как 1. Что вызывает условие val == 1. То, что я хотел сделать во время этого блока, заключается в попытке удалить groupName из файла groups.txt. Для этого я создал новый txt-файл под названием TempFile, который копирует все имена из group.txt EXCEPT groupName. Затем этот файл переименовывается в файл groups.txt, и старый файл groups.txt удаляется.Как переименовать файл txt с помощью Java после копирования содержимого из другого txt-файла
Все работает по назначению, за исключением переименования. Файл temp.txt все еще существует, и файл groups.txt не изменяется. Я проверил булевский успех, и он всегда возвращается как ложный. Есть идеи, как это решить?
if (method.equals("delete group")){
int val = 0;
String groupName = myClient.readLine();
try {
Scanner file = new Scanner(new File("groups.txt"));
while (file.hasNextLine()){
String line = file.nextLine();
if (line.indexOf(groupName) != -1){
val = 1;
}
}
if (val == 1){
try {
File groupFile = new File("groups.txt");
File tempFile = new File("temp.txt");
BufferedReader reader = new BufferedReader(new FileReader(groupFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
System.out.println(groupName);
while ((currentLine = reader.readLine()) != null){
String trimLine = currentLine.trim();
if (trimLine.equals(groupName)){
continue;
} else {
writer.write(currentLine + System.getProperty("line.separator"));
}
}
writer.close();
reader.close();
groupFile.delete();
boolean success = tempFile.renameTo("groups.txt");
} catch (IOException f){
System.err.println("File Not Found: " + f.getMessage());
} }
} catch (FileNotFoundException f){
System.err.println("File Not Found Exception: " + f.getMessage());
}
}
КОД ПЕРЕД ВЫШЕ:
if (command.equals("group")){
String method = myClient.readLine();
if (method.equals("create group")){
String groupName = myClient.readLine();
int val = 0;
try {
Scanner file = new Scanner(new File("groups.txt"));
while (file.hasNextLine()){
String line = file.nextLine();
if (line.indexOf(groupName) != -1){
Report.error("group name already exists, please pick another");
val = 1;
}
}
} catch (FileNotFoundException f){
System.err.println("File Not Found: " + f.getMessage());
}
if (val == 0){
try {
PrintWriter out = new PrintWriter(new FileWriter("groups.txt", true));
out.println(groupName);
out.close();
} catch (IOException e){
Report.error("IOException: " + e.getMessage());
}
}
Во второй части кода, это где я первоначально обновить файл groups.txt. Поэтому каждый раз, когда пользователь добавляет группу, он обновляет файл groups.txt, добавляя новое имя группы в конец файла. Во-первых, я уверен, что имя_группы еще не существует с помощью Scanner. myClient - это BufferedReader, который читает из другого класса, который хранит то, что пользователь вводит в командной строке.
проверить возвращаемое значение 'groupFile.delete()' –
значения возвращает ложь :( – assassinweed2
На самом деле, @HappyHal может быть на что-то упомянуть, чтобы закрыть сканер, который открывает 'groups.txt' –