Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195

Не удаляется файл

14.02.2016, 13:59. Показов 3358. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно заменить одну строку в файле. Я реализовал это так: Создаю новый файл, потом читаю каждую строку из первого файла, если нужная мне строка присутствует то она записывается в новый файл уже в изменённом виде, если нет, то остаётся такой же. В конце нужно удалить первый файл и поменять имя нового на то, который я удалил. Но проблема в том, что файл не удаляется и соответственно имя не меняется.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class EditListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            try {
                tempfile = new File("temp.txt");
                BufferedReader reader = new BufferedReader(new FileReader(file));
                BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile));
 
                String currentString = null;
 
                String[] newForEdit = new String[2];
                String[] oldLine = new String[2];
                newForEdit = field2.getText().split("/");
 
                while((currentString = reader.readLine()) != null) {
                    oldLine = currentString.split("/");
                    if(oldLine[0].equals(newForEdit[0])) {
                        writer.write(field2.getText());
                    } else {
                        writer.write(currentString);
                    }
                    writer.newLine();
                }
 
                reader.close();
                writer.close();
 
                file.delete();
                tempfile.renameTo(file);
 
            } catch(Exception ex) {}
        }
    }
В чём здесь может быть проблема?

Добавлено через 33 секунды
File file я создал в коде до этого

Добавлено через 7 минут
Ммм, странно. Просто руками удалил файл, теперь всё работает и удаляется сам
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2016, 13:59
Ответы с готовыми решениями:

Не удаляется файл. Возвращает false
Написал два метода, которые взаимосвязаны. Смысл их в том, чтобы если файл XML некорректный, например нет закрывающего тега в строке 122,...

Не удаляется файл
Не удаляется файл: C:\Windows old\Windows\System32\Tasks\Программа онлайн-обновления Adobe. "Программа онлайн-обновления Adobe" -...

Не удаляется файл
при помощи этого кода я хочу удалить файл, но не получается, он не удаляется, не подскажите как удалить? string applicationRoot =...

3
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
14.02.2016, 14:19
Возможно исключение вылетало где-то в цикле и вообще не доходило до delete. А т.к. исключение в catch проглатывается его и не видно. Надо в catch что-то делать хотя-бы вывод сообщения:

Java
1
2
System.err.println( Exception occurred: + ex.toString()); 
ex.printStackTrace();
0
 Аватар для Scythian
59 / 59 / 12
Регистрация: 01.01.2010
Сообщений: 222
14.02.2016, 14:32
Цитата Сообщение от liptonus777 Посмотреть сообщение
Java
1
2
file.delete();
 tempfile.renameTo(file);
вы сначала удаляете файл, а потом пытаетесь переименовать удаленным файлом. Не уверен, но возможно проблема в этом..
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
14.02.2016, 14:52  [ТС]
Цитата Сообщение от Scythian Посмотреть сообщение
вы сначала удаляете файл, а потом пытаетесь переименовать удаленным файлом. Не уверен, но возможно проблема в этом..
file = new File("list.txt");

Цитата Сообщение от Lumber Посмотреть сообщение
Возможно исключение вылетало где-то в цикле и вообще не доходило до delete. А т.к. исключение в catch проглатывается его и не видно. Надо в catch что-то делать хотя-бы вывод сообщения:
Да, вылетает исключение. Спасибо, сейчас буду разбираться

Добавлено через 1 минуту
Можно ли одновременно иметь и BufferedReader и BufferedWriter?
Java
1
2
BufferedReader reader2 = new BufferedReader(new FileReader(tempfile));
                BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile));
Добавлено через 9 минут
Попробовал сделать не удаление файла, а копирование из одного в другой
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class EditListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            try {
                tempfile = new File("temp.txt");
                tempfile.createNewFile();
                BufferedReader reader = new BufferedReader(new FileReader(file));
                BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile, true));
 
                String currentString = null;
 
                String[] newForEdit = new String[2];
                String[] oldLine = new String[2];
                newForEdit = field2.getText().split("/");
 
                while((currentString = reader.readLine()) != null) {
                    oldLine = currentString.split("/");
                    if(oldLine[0].equals(newForEdit[0])) {
                        writer.write(field2.getText());
                    } else {
                        writer.write(currentString);
                    }
                    writer.newLine();
                }
 
                reader.close();
                writer.close();
 
                file.delete();
                file.createNewFile();
 
                BufferedReader reader2 = new BufferedReader(new FileReader(tempfile));
                BufferedWriter writer2 = new BufferedWriter(new FileWriter(file, true));
 
                String line = null;
 
                while((line = reader2.readLine()) != null) {
                    writer2.write(line);
                    writer2.newLine();
                }
 
                reader2.close();
                writer2.close();
 
                tempfile.delete();
 
 
            } catch(Exception ex) {ex.printStackTrace();}
 
            field2.setText("");
            setUpList();
        }
    }
Но, после первой перезаписи, то что было раньше не удаляется а просто добавляется. Например
я пишу b1/2 и меняю это на b1/5. Всё работает нормально, а на следующий раз строка просто добавится в конец файла

Добавлено через 2 минуты
Сделал вывод в консоль если удаление file успешно, но он удаляется только первый раз... из за чего так может быть?

Добавлено через 3 минуты
В конце вызывается метод setUpList() в котором есть BufferedReader, который я не закрыл...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2016, 14:52
Помогаю со студенческими работами здесь

Не удаляется файл
Здравствуйте! Visual C ++ 6. Есть форма. в ней Webbrowser control. Скрипт на странице загружает картинку. После загрузки страницы я хочу...

Не удаляется файл
В папке " Temporary internet Files " всё удаляется , кроме вот этого файла : faficon.icо , в безопасном режиме тоже не удаляется , при его...

Не удаляется файл
Скачал какую-то хрень, она размножилась по нескольким папкам. Удаляется, но после перезагрузки все на прежнем месте. Антивирус не видит или...

Не удаляется файл
После установки нескольких программ типа daemon tool lite на рабочем столе появился файл без имени(в смысле вообще) со значком по...

Файл не удаляется
вчера на рабочий стол хотел скинуть фильм.....при скидывании произошел какой то глюк и полностью файл не скинулся.....тем не менее на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru