общее место для хранения файлов на Mac и Windows

Я пишу код Java, который должен сохранить файл.

приведенный ниже код предназначен для Mac.

ImageIO.write(movie_image, "jpg", новый файл ("/Users/sathyap/Desktop/movieimages/"+fileName+".jpg"));

есть ли способ, которым я могу жестко закодировать структуру каталогов "/Users/sathyap/Desktop/movieimages/", которая работает как для Mac, так и для Windows.


person Sathya    schedule 17.09.2010    source источник
comment
Вы можете сохранить файл где-нибудь в текущем рабочем каталоге?   -  person jsshah    schedule 17.09.2010
comment
но доступен ли он пользователю. я хочу, чтобы это было так, чтобы пользователь мог легко получить к нему доступ. например Мои документы или рабочий стол и т. д.   -  person Sathya    schedule 17.09.2010
comment
если пользователь может запустить программу из каталога, скажем, c:\test... и если программа может писать в этот каталог... то файл также доступен для пользователя... см. мой ответ ниже   -  person jsshah    schedule 17.09.2010
comment
Но это не обязательно место, где вы хотите хранить данные, которые вы хотите сделать доступными для пользователя.   -  person McAden    schedule 17.09.2010


Ответы (2)


Предполагая, что программа работает в каталоге (X) на Mac и Windows. Вы можете закодировать это так:

//This will give the current working directory
String directoryPath = System.getProperty("user.dir");

//now get the platform dependent path
String filePath = directoryPath + File.separator + "data" + File.separator + "filename";

File fileToWriteTo = new File(filePath);

File.separator позаботится о платформе... ваши файлы всегда будут сохраняться под текущим рабочим каталогом... вы можете предоставить ярлыки для доступа к этим путям и разместить их на рабочем столе

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

person jsshah    schedule 17.09.2010
comment
Спасибо. работает отлично. Если пользователь может выполнить программу, которая записывает в этот каталог ... Я предполагаю, что пользователь также может без проблем получить доступ к файлам, это правда. - person Sathya; 17.09.2010
comment
Это не будет работать в Windows, если ваша программа установлена ​​в Program Files. Ожидается, что вы будете хранить файлы после установки под пользователем. user.dir — рабочий каталог. - person McAden; 17.09.2010

EDIT: полностью меняю свой ответ, потому что я думаю, что вы ищете кроссплатформенность, а не кодирование для каждой ситуации отдельно.

System.getProperty("user.home")
person McAden    schedule 17.09.2010