2015-07-16 4 views
1

Я хочу сохранить файл на своем рабочем столе. Поэтому у меня естьСохранить на рабочий стол без точного пути

FileOutputStream out = new FileOutputStream(new File("C:\\path_to_Dekstop\\print.xls")); 

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

File desktopDir = new File(System.getProperty("user.home"), "Desktop"); 
System.out.println(desktopDir.getPath() + " " + desktopDir.exists()); 
String pathToDesktop = desktopDir.getPath(); 
FileOutputStream out = new FileOutputStream(new File(pathToDesktop)); 

, но я получил ошибку

java.io.FileNotFoundException: C:\Users\nat\Desktop (Access is denied) 
+0

'new File (" pathToDesktop "))' ...? Вы цитируете переменную ... Я думаю, что это должен быть 'new File (pathToDesktop))' ... – MadProgrammer

+0

thx для заметок. Я сделал ошибку, поскольку был написан вопрос. У меня это без котировок ... – yaylitzis

ответ

2

pathToDesktop представляет каталог на Desktop, вы должны указать имя файла написать

FileOutputStream out = new FileOutputStream(new File(desktopDir, "File to be written to"));

Что поместит "File to be written to" на рабочем столе

+0

отлично! Я понял! – yaylitzis

0

Вы не можете напрямую написать Desktop в качестве папки, но не file. Вам нужно написать file. Что-то вроде Тхи S: -

File desktopDir = new File(System.getProperty("user.home"), "Desktop"); 
System.out.println(desktopDir.getPath() + " " + desktopDir.exists()); 
String pathToDesktop = desktopDir.getPath(); 
FileOutputStream out = new FileOutputStream(new File(pathToDesktop+System.getProperty("file.separator")+"print.xls")); 

Это будет писать print.xls в Desktop.

Смежные вопросы