Папка создана на SD-карте Android, но файл не создан - PullRequest
1 голос
/ 09 марта 2012

Я думаю, что я посмотрел на все соответствующие вопросы и до сих пор не могу заставить это работать.

Вот код:

File sdCard = Environment.getExternalStorageDirectory();  
File directory= new File (sdCard.getAbsolutePath() + appName);          
directory.mkdirs();     
File file = new File(directory,fileName);  

Папка создана,но я получаю сообщение о том, что файл не существует.appName - это строка, содержащая имя папки, которая работает правильно.fileName - это строка, содержащая имя файла, который я хочу включить.

Я включил разрешение в манифест.

Что я делаю неправильно?

Обновление:

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

Ответы [ 3 ]

3 голосов
/ 09 марта 2012

Если каталог создан, то вы на правильном пути. В вашем коде вы фактически не создаете файл на SD-карте. Если вам нужно создать файл, то сделайте это:

File sdCard = Environment.getExternalStorageDirectory();  
File file = new File(sdCard.getAbsolutePath() + appName + "/" + fileName);
directory.mkdirs();
file.createNewFile()

Это только условно. Было бы намного лучше фактически разделить вашу fileName на отдельную подпапку и текущий файл и обрабатывать их отдельно.

1 голос
/ 09 марта 2012

Попробуйте это:

В этом я создаю текстовый файл (.txt файл) строки.

public void createFileFromString(String text)
    {       
       File logFile = new File("sdcard/xmlresponseiphone.txt");
       if (!logFile.exists())
       {
          try
          {
             logFile.createNewFile();
          } 
          catch (IOException e)
          {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }
       }
       try
       {
          //BufferedWriter for performance, true to set append to file flag
          BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 
          buf.append(text);
          buf.newLine();
          buf.close();
       }
       catch (IOException e)
       {
          // TODO Auto-generated catch block
          e.printStackTrace();
       }
    }

Проверьте это, и посмотрите, чего вам не хватает:)

0 голосов
/ 10 марта 2012

Попробуйте что-нибудь подобное.В этом случае я сохраняю изображение!

Для создания каталога:

File directory = new File(Environment.getExternalStorageDirectory()
                + File.separator + appName);
        directory.mkdirs();

И для сохранения в нем публичного сохранения void (Растровый график, Контекст контекста, Имя строки, Время строки, булево) генерирует IOException {

    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    graph.compress(Bitmap.CompressFormat.PNG, 100, bytes);

    // you can create a new file name "test.jpg" in sdcard folder.
    String fileName = "";
    if (now){
        fileName = getDateTime()+"_00"+".png";
    }
    else {
        fileName = time.replace(".txt", ".png");
    }
    File f = new File(Environment.getExternalStorageDirectory()
            + File.separator + "appName/" + fileName);
    f.createNewFile(); // write the bytes in file
    FileOutputStream fo = new FileOutputStream(f);
    fo.write(bytes.toByteArray());
}

Я думаю, что трюк в File.separator!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...