Удалить файл и директорию в которой он находился
Подскажите пожалуйста как можно удалить директорию уже после удаления файла который в ней лежал. Сам файл удаляю в конце кода, но нужно и дропнуть саму папку в которой он был. Вот пример моего кода:
response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("application/application/octet-stream"); String filePath = "D:/file/ПЛ5.111.008 СБ/ПЛ5.111.008 СБ [1].tif"; String test = request.getParameter("test"); simpleDLL sdll = simpleDLL.INSTANCE; File file = new File(filePath); String getFileName = file.getName(); getFileName = getFileName.replace(" ", ""); String URLEncodedFileName = URLEncoder.encode(getFileName, "UTF-8"); response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncodedFileName); FileInputStream fileIn = new FileInputStream(file); ServletOutputStream out = response.getOutputStream(); byte[] outputByte = new byte[4096];//copy binary contect to output stream while (fileIn.read(outputByte, 0, 4096) != -1) < out.write(outputByte, 0, 4096); >fileIn.close(); out.flush(); out.close(); request.setAttribute("test", test); RequestDispatcher view = request.getRequestDispatcher("/index.jsp"); file.delete();
Удаление папки, которая используется программой
Мне нужно удалить папку с файлами, но моя программа её использовала, поэтому я не могу удалить эту папку (она просто не удаляется).
Не знаю почему, ведь программе эта папка больше не нужна.
Дело в том, что в этой папке был текстовый файл, программа его прочла, данные запомнила, и теперь папку с этим файлом мне надо удалить.
File file = new File(_oldDirectory); file.delete();
_oldDirectory это путь до папки, не файла (он правильный).
Вот если не считывать информацию с этого файла в этой папке, а сразу пробовать удалить, то удаляется.
Есть ли другой способ удаления?
Или как сказать программе, чтобы не использовала папку?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Ошибка: Камера используется другой программой
Здравствуйте. На компьютере не работает камера. Пишет:"камера используется другой программой".
Запись в файл, который используется другой программой
Проблема такая. Программа постоянно дописывает в Rtf файл данные, если открыть этот файл вордом то.
Какой объем RAM реально используется программой?
Сколько памяти из 8кб можно задействовать под буфер ADC? т.е какой обьем ROM используется под.
Ошибка в MSComm: ‘Oшибка : данный COM-порт уже используется другой программой.’
Жизнь заставила возиться с MSComm32.ocx моя прога должна выслать в порт сигнала вызова(запроса).
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
.close() после чтения есть?
Регистрация: 16.01.2013
Сообщений: 248
Нету, но куда его писать?
Файл читаю так:
1 2 3 4 5 6 7 8 9 10 11 12 13
try(FileReader reader = new FileReader("C:\\SomeDir\\notes3.txt")) { // читаем посимвольно int c; while((c=reader.read())!=-1){ System.out.print((char)c); } } catch(IOException ex){ System.out.println(ex.getMessage()); }
Добавлено через 2 минуты
Поставил reader.close();, но не помогло.
![]()
![]()
4467 / 2701 / 484
Регистрация: 28.04.2012
Сообщений: 8,558

Сообщение было отмечено MorfixProton как решение
Решение
Сообщение от MorfixProton 
Нету, но куда его писать?
Файл читаю так
Никуда. Конструкция
1 2 3
try(FileReader reader = new FileReader("C:\\SomeDir\\notes3.txt")) { . }
сама автоматически сделает вызов close.
Добавлено через 3 минуты
Сообщение от MorfixProton 
Дело в том, что в этой папке был текстовый файл, программа его прочла, данные запомнила, и теперь папку с этим файлом мне надо удалить.
Просто так
File file = new File(_oldDirectory); file.delete();
удалить можно только пустой каталог. Удалять каталог с содержимым нужно рекурсивно. В интернетах полно примеров, например
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Path directory = Paths.get("/tmp"); Files.walkFileTree(directory, new SimpleFileVisitorPath>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Files.delete(file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { Files.delete(dir); return FileVisitResult.CONTINUE; } });
Удалить файл в Java
В этом посте будет обсуждаться, как удалить файл в Java.
Есть несколько способов удалить файл в простой Java и с помощью сторонних библиотек. Они подробно обсуждаются ниже:
1. Использование File Class
До Java 7 мы могли использовать File.delete() способ удаления данного файла. Метод возвращает true, если файл успешно удален, и false, если файл не существует или в случае ошибки ввода-вывода. Этот метод не выдает IOException когда не удается удалить файл.
В Java, как удалить файлы, папки из Windows, Mac OS X и Linux OS?
Некоторое время назад я написал статью о том, как автоматически удалять / tmp или ненужные файлы / папки в Linux через скрипт ? Теперь пришло время написать ту же утилиту для среды Windows.
В этом уроке мы подробно рассмотрим все этапы удаления файлов и папок в ОС Windows, Mac OS X и Linux .
Давайте начнем:
- Создать файл CrunchifyDeleteWindowsFileFolder.java
- Создайте crunchifyDeleteWindowsFolder(List of Directories) какая первая проверка, если каталог существует или нет? Если существует, он удалит все файлы под ним.
- Создайте crunchifyDeleteFiles(file) который удаляет файл.
Посмотрите на эти два каталога и 5 файлов:
- папка c: / crunchify
- crunchify-1.txt
- crunchify-2.txt
- crunchify-3.txt
- crunchify-4.txt
- crunchify-5.txt
- /Users/appshah/Downloads/file.ppsx
- /tmp/crunchify-file.txt
CrunchifyDeleteWindowsFileFolder.java