Pourquoi ne FileOutputStream jeter FileNotFoundException?
Le Développeur Android de référence (cette page) dit:
Throws FileNotFoundException
Mais, à la très commencer, il dit:
Ouvrir un fichier privé associé à ce Contexte le dossier de candidature pour l'écriture. Crée le fichier s'il n'existe pas déjà.
Si c'est le cas, pourquoi le FileNotFoundException jamais être jetés?
Je veux juste m'assurer que je suis correctement la manipulation de tous les cas. Je suis l'aide de la fonctionnalité par défaut, je viens de le terminer dans un try..catch
bloc avec rien dans le catch
bloc car il n'est pas possible pour un FileNotFoundException
jamais être jeté dans la fonctionnalité par défaut?
Edit: exemple de fonctionnalité par défaut':
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
Est-il possible que votre application n'aura pas l'autorisation de créer le fichier à la place vous point?
Je précise, je ne suis pas vraiment pour l'Exception, juste se préparer à la possibilité qu'il peut être jeté sur un autre appareil. Mais le dossier d'autorisation est un point très valable (bien qu'il ne devrait pas être un problème sur la racine dir, droit?)
Je précise, je ne suis pas vraiment pour l'Exception, juste se préparer à la possibilité qu'il peut être jeté sur un autre appareil. Mais le dossier d'autorisation est un point très valable (bien qu'il ne devrait pas être un problème sur la racine dir, droit?)
OriginalL'auteur 1owk3y | 2013-11-23
Vous devez vous connecter pour publier un commentaire.
Cela peut se produire par exemple si vous essayez d'ouvrir un Dossier ou si le fichier que vous essayez d'ouvrir n'existe pas, mais vous n'avez pas les autorisations pour le créer.
A de sens, bien que incroyablement mauvais choix de nom de l'exception!
OriginalL'auteur Blub
La ContextImpl.openFileOutput est mis en œuvre comme suit sur ICS:
La fonction makeFileName sera assurez-vous que vous ne pouvez pas spécifier le répertoire de la structure ici:
Bien que cela ne semble pas possible de voir la fondation friedrich naumann exception, cependant, vous pouvez voir qu'il n'est pas thread-safe, donc f.getParentFile() peut encore jeter cette exception si un autre thread est de retirer le /data/data/com.yourpkg.nom/répertoire des fichiers.
Est Boda réponse vraiment le cas dont vous parlez?
Oui, depuis une source manquante dossier peut également causer de la question, et sa réponse est la plus probable et la plus pertinente pour quelqu'un d'autre qui soulève cette question. Je tiens cependant à vous remercier pour la quantité de la profondeur et de la recherche que vous mettez dans votre réponse
Curieux que l'on dérange pour créer le répertoire parent, mais pas les grands-parents etc. les répertoires.
Android souhaitez limiter votre 'divers' de stocker des fichiers dans le dossier 'files' dans votre répertoire du package.
OriginalL'auteur Robin
Dans mon cas, la raison en était que le nom du fichier n'était pas OK.
Évidemment, les deux-points dans le nom de fichier n'est pas aimée.
Ne fonctionne pas (-> FileNotFoundException):
De travail:
(Différence est le "." au lieu de ":" entre les HH, mm, ss et dans le SimpleDateFormat)
OriginalL'auteur masand
La cause la plus fréquente est qu'un intermédiaire répertoire n'existe pas.
FileOutputStream
ne crée pas de ceux-là. Il peut aussi être un problème d'autorisations: l'intégralité du chemin d'accès existe, mais que vous n'avez pas de créer des autorisations dans le répertoire final, ou de remplacer les autorisations sur le fichier s'il existe déjà.Je suis en train de parler générique des systèmes d'exploitation. Le mot "Linux" n'apparaît pas dans ma réponse, qui s'applique aussi bien à Unix, Windows, AIX, HP-UX, Solaris, MME DOS, OS/2, IX/370, et un certain nombre d'autres systèmes. J'ai déjà abordé la question des autorisations dans le répertoire final.
OriginalL'auteur user207421