#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")