2010-08-30 5 views
6

Je rencontre un FileNotFoundException lorsque je tente de faire un fichier en utilisant RandomAccessFile:java.io.FileNotFoundException lors de l'utilisation RandomAccessFile pour créer le fichier

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

Je ne maintenant comment contourner ce problème. Ça me rend fou.

Merci

+0

Avez-vous réellement l'autorisation de créer un fichier sur la racine du système de fichiers? Essayez avec juste 'test.jpg' –

+0

"/"est-il par hasard ... Je ne l'utilise pas dans le code. L'application doit créer le fichier dans le répertoire de l'application et non dans le répertoire racine. – mlevit

Répondre

7

Essayez

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

Merci mon pote. Encore une chose ... plus bas j'essaie d'y accéder à nouveau pour convertir en bitmap: bmImg = BitmapFactory.decodeFile ("wallpaperSwitch.jpg"); Je reçois encore une fois une erreur, comment puis-je le faire? – mlevit

+0

Bitmap bmImg = BitmapFactory.decodeStream (openFileInput ("wallpaperSwitch.jpg")); Essayez ça. –

1

De la documentation:

FileNotFoundException - si le mode est « r », mais l'objet de fichier donné ne signifie pas un fichier régulier existant ou si le mode commence par « rw » mais l'objet de fichier donné ne désigne pas un fichier régulier existant, inscriptible et un nouveau fichier régulier de ce nom ne peut pas être créé, ou si une autre erreur se produit lors de l'ouverture ou la création du fichier

Êtes-vous en mesure de créer un tel un fichier par d'autres moyens? Travaillez-vous dans un environnement où "/" désigne le répertoire racine?

+0

Je n'ai pas essayé de créer le fichier en utilisant d'autres moyens, mais je suppose que j'obtiendrais le même résultat. Le "/" est là par hasard ... s'il vous plaît ignorez-le. – mlevit

1

En fait, cette erreur se produit quand on donne seulement le nom du fichier

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

par exemple:

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

Donnez le chemin de tout le répertoire, par exemple

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

File.seseparator? –

Questions connexes