Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 02:56   #1
oirren
Новичок
Джуниор
 
Регистрация: 20.12.2009
Сообщений: 1
По умолчанию Не удаляется файл, не закрыты все потоки для этого файла

При выполнении кода программы не удаляется файл, потому что не закрыты все потоки для этого файлы, часть кода приведена ниже.
Подскажите как закрыть все потоки для этого файла, или удалить его. (File fw=new File(pathToFile+name+"watermark.pdf "); // вот здесь файл не удаляется)
Код:
FileInputStream fis = null;
		try {
			fis = new FileInputStream(pathToFile+name+"watermark"+".pdf");
			FileChannel fc = fis.getChannel();
			MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());                    
            PDFFile pdfFile = new PDFFile(bb);
        			PDFPrintPage pages = new PDFPrintPage(pdfFile);
                                    PrinterJob pjob = PrinterJob.getPrinterJob();
                                    PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
			pf.setOrientation(PageFormat.REVERSE_LANDSCAPE);
			Paper p = new Paper();
                                   	p.setSize(595, 842);
			p.setImageableArea(15, 15, 565, 812); 
			pf.setPaper(p);
                            	pjob.setJobName(fpdf[0].getName());
			Book book = new Book();
			book.append(pages, pf, pdfFile.getNumPages());
			pjob.setPageable(book);
			pjob.pageDialog(pf);
			pjob.defaultPage();
			if (pjob.printDialog())
				try 
				{
					pjob.print();
					try {
						System.gc();
						fis.close();
						} catch (IOException e1) {
						MessageBox.post(""+e1, ""+e1, MessageBox.INFORMATION);
					}
				}
				catch (Exception ex)
				{MessageBox.post(""+ex, "", MessageBox.INFORMATION);}
		} 
		catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
					System.gc();
		try {
				System.gc();
				fis.close();
				} catch (IOException e1) {
				MessageBox.post(""+e1, "", MessageBox.INFORMATION);
			}
			File fw=new File(pathToFile+name+"watermark.pdf"); // вот здесь файл не удаляется
			boolean del=ff.delete();
			boolean delw=fw.delete();
			MessageBox.post(""+delw, "1", MessageBox.INFORMATION);
			if (!delw) {
				System.gc();
			delw=fw.delete();
			MessageBox.post(""+delw, "2", MessageBox.INFORMATION);
			}
		}
bert
oirren вне форума Ответить с цитированием
Старый 20.12.2009, 21:12   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

FileChannel наследник AbstractInterruptibleChannel, который имеет метод close().
Попробуйте закрыть файловый канал прежде чем попытаетесь удалить файл(вызвав для этого метод close()).
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать в файл Т2 все компоненты файла Т1 с заменой в них символа «0» на символ "1" АполинАрия Помощь студентам 2 31.05.2009 23:45
a=42339, как все цифры этого числа разделить пробелами??? MjRed Помощь студентам 6 19.12.2008 11:09
Записать в файл g все парные числа файла f Lemo Помощь студентам 3 19.10.2008 21:27
Не удаляется файл. Манжосов Денис :) Общие вопросы Delphi 2 21.08.2008 16:41