2012-09-24 14 views
5

Próbuję zapisać bitmapę w katalogu Pictures. Oto kodCzy istnieje różnica między/mnt/sdcard i/sdcard?

  File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 

      File file = new File(path, "test1.PNG"); 
      try { 
        path.mkdirs(); 
        OutputStream out = new FileOutputStream(file); 
        mBitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 
        out.flush(); 
        out.close(); 

      } catch (Exception e) { 
        e.printStackTrace(); 
        Log.w("ExternalStorage", "Error writing " + file, e); 
      } 

ale wykonanie utknęło w OutputStream out = new FileOutputStream(file); użyłem debugger oraz pełna ścieżka zwraca mnt/sdcard/Pictures/test1.PNG jest mnt/ winowajcą dlaczego nie mogłem ominąć OutputStream out = new FileOutputStream(file);? Ponieważ widzę tylko sdcard/ w moim katalogu plików.

dziękuję!

+0

Jaka jest wartość "ścieżki" .. ?? –

+1

jaki jest błąd? – njzk2

Odpowiedz

1

można dostać i uzyskać dostęp do katalogu sdcard użyciu tego Environment.getExternalStorageDirectory() jako swojego katalogu mnt/sdcard lub sdcard/urządzenie zależnej tym jak OS był dostęp i korzystać z książki telefonicznej numer zewnętrzny nie ma potrzeby martwić się o inne urządzenie i inny katalog został zwrócony tą metodą.

EDIT

dostępu do pamięci zewnętrznej potrzebują pozwolenia i zdefiniować w androidmanifest.xml pliku jako zgodą użytkownika

WRITE_EXTERNAL_STORAGE 
+1

dziękuję za odpowiedź, doceń czas. najwyraźniej, aby działał, trzeba ustawić uprawnienie do WRITE_EXTERNAL_STORAGE, przeoczyłem tę część, a tym samym FileNotFoundException nawet po wywołaniu mkdir(). – user1694345

0

wykorzystanie takich jak ten

String filePath = "/sdcard/yourfile.txt"; 

FileOutputStream os = null; 
os = new FileOutputStream(filePath); 
os.write(write it to file); 
os.close(); 
3

/sdcard to dowiązanie do /mnt/sdcard ... i /sdcard jest tylko do odczytu w systemie plików więc lepiej użyć /mnt/sdcard/ ..

Powiązane problemy