Файл отображается как каталог, а не файл?

#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
}