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

#windows #macos #file #filesystems #file-handling

#Windows #macos #файл #файловые системы #обработка файлов

Вопрос:

я пишу java-код, которому необходимо сохранить файл.

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

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

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

Комментарии:

1. можете ли вы сохранить файл где-нибудь в текущем рабочем каталоге?

2. но доступно ли это пользователю? я хочу, чтобы это было так, чтобы пользователь мог легко получить к нему доступ. например, Мои документы или рабочий стол и т.д.

3. если пользователь может запустить программу из каталога, скажите «c:test » … и если программа может выполнять запись в этот каталог … то файл также доступен пользователю… смотрите мой ответ ниже

4. Но это не обязательно то место, где вы хотите хранить данные, которые вы хотите сделать легкодоступными для пользователя.

Ответ №1:

Предполагается, что программа выполняется в каталоге (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 позаботится о платформе… ваши файлы всегда будут сохранены в текущем рабочем директории … вы можете предоставить ярлыки для доступа к этим путям и разместить их на рабочем столе

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

Комментарии:

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

2. Это не будет работать в Windows, если ваша программа установлена в Program Files. Предполагается, что вы будете хранить файлы после установки под именем пользователя. user.dir — это рабочий каталог.

Ответ №2:

РЕДАКТИРОВАТЬ: Полностью меняю свой ответ, потому что я думаю, что вы ищете кроссплатформенность, а не кодирование для каждой ситуации отдельно.

 System.getProperty("user.home")