2010-08-30 23 views
6

Sto incontrando un FileNotFoundException quando provo a fare un file utilizzando RandomAccessFile:java.io.FileNotFoundException quando si utilizza RandomAccessFile per creare file di

RandomAccessFile file = new RandomAccessFile("/test.jpg", "rw"); 

non ora come ottenere intorno a questo. Mi sta facendo impazzire.

Grazie

+0

Hai effettivamente il permesso di creare un file sul root del filesystem? Prova con solo 'test.jpg' –

+0

"/"c'è per caso ... Non lo uso nel codice. L'app dovrebbe creare il file nella directory dell'app e non nella directory radice. – mlevit

risposta

7

Prova

RandomAccessFile file = new RandomAccessFile(new File(getFilesDir(), "test.jpg"), 
     "rw"); 
+0

Grazie amico. Ancora una cosa ... più in basso sto provando ad accedervi di nuovo per convertire in una Bitmap: bmImg = BitmapFactory.decodeFile ("wallpaperSwitch.jpg"); Ricevo ancora l'errore, come faccio allora? – mlevit

+0

Bitmap bmImg = BitmapFactory.decodeStream (openFileInput ("wallpaperSwitch.jpg")); Prova questo. –

1

Dalla documentazione:

FileNotFoundException - se la modalità è "r" ma l'oggetto file dato non denota un file regolare esistente, o se la modalità inizia con "rw" ma l'oggetto file dato non denota una, scrivibile file regolare esistente e un nuovo file regolare di questo nome non può essere creato, o se qualche altro errore si verifica durante l'apertura o la creazione del file

Sei in grado di creare tale un file con altri mezzi? Stai lavorando in un ambiente in cui "/" indica la directory root?

+0

Non ho provato a creare il file usando altri mezzi, ma suppongo che otterrei lo stesso risultato. Il "/" è lì per caso ... per favore ignoralo. – mlevit

1

In realtà questo errore si verifica quando diamo solo il nome del file

String fileName="Shiva.txt" 
String Directory = Environment.getExternalStorageDirectory() + File.separator + "OneSecondMoments" + File.seseparator + fileName 

ad esempio:

RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "rw"); 

dare il percorso di tutta la directory, ad esempio

RandomAccessFile randomAccessFile = new RandomAccessFile(Directory, "rw"); 
+0

File.seseparator? –