#java #android
#java #Android
Вопрос:
Я нахожусь в процессе создания приложения для Android, которое создает новый файл при нажатии кнопки. Я использую следующий код:
File file = new File(Environment.getExternalStorageDirectory()
File.separator
"myDirectory" //folder name
File.separator
"myFile.png"); //file name
file.mkdirs();
Однако myFile.png
на самом деле отображается как каталог, а не как файл .png.
Ответ №1:
Из-за file.mkdirs();
mkdirs() — используется для создания каталога по имени файла, заданному параметром файлового объекта, если вы хотите создать файл, выполните операцию ввода-вывода для записи в файл,
В вашем случае: создать каталог,
File file = new File(Environment.getExternalStorageDirectory()
File.separator
"myDirectory" //folder name
File.separator
"myFile.png"); //file name
file.getParentFile().mkdirs();
Это создает папку MyDirectory во внешнем хранилище.
Ответ №2:
Согласно его документации File.mkdirs()
«создает каталог, названный по имени файла в конце этого файла».
Другими словами: вы явно создаете каталог с именем myFile.png
. Если это не то, что вы хотите, то вы, вероятно, хотите сделать file.getParentFile().mkdirs()
вместо этого.
Ответ №3:
file.mkdirs()
приведенный выше код создаст новые каталоги.
Для создания файла
try{
File file = new File(Environment.getExternalStorageDirectory()
File.separator
"myDirectory" //folder name
File.separator
"myFile.png"); //file name
myFile.createNewFile();
OutputStream filoutputStream = new FileOutputStream(myFile);
filoutputStream.write(b);
filoutputStream.flush();
filoutputStream.close();
} catch (IOException e) {
// handler exception
}