Vérifier si le fichier existe, sans le créer
Si je fais ceci:
File f = new File("c:\\text.txt");
if (f.exists()) {
System.out.println("File exists");
} else {
System.out.println("File not found!");
}
Puis le fichier est créé et renvoie toujours "le Fichier existe déjà". Est-il possible de vérifier si un fichier existe, sans le créer?
EDIT:
J'ai oublié de mentionner que c'est dans une boucle for. Voici donc la vraie chose:
for (int i = 0; i < 10; i++) {
File file = new File("c:\\text" + i + ".txt");
System.out.println("New file created: " + file.getPath());
}
- double possible de Comment puis-je vérifier si un fichier existe? (Java sur Windows)
- en fait c'est pas un doublon. Le titre de cette question est tout simplement mal posé.
- peut-être que ce n'est pas une copie exacte, mais la réponse pourrait être en déduire par la lecture de cette question et d'essayer un peu de code ... donc pour moi c'est un doublon
- Pouvez-vous, mais tout méthode à un WEBMethods transformateur? J'ai besoin de faire exactement ce que ce code ne.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous instanciez un
File
, vous n'êtes pas créer quoi que ce soit sur le disque, mais la simple construction d'un objet sur lequel vous pouvez appeler certaines méthodes, comme laexists()
.C'est très bien et pas cher, n'essayez pas d'éviter cette instanciation.
La
File
instance n'a que deux champs:Et voici que le constructeur :
Comme vous pouvez le voir, le
File
exemple n'est qu'une encapsulation de la voie. La création dans l'ordre d'appelexists()
est la bonne manière de procéder. Ne pas essayer de l'optimiser à l'écart.new File
code est dans une boucle, vous pourriez être coupable de l'inefficacité de codage, mais ne parvenez toujours pas à créer un fichier réel. Si votre fichier existe, il n'est absolument pas due à la classe File.new File()
jamais crée un fichier sur le système de fichiers, peu importe où il est. autre Chose dans votre boucle, pourrait créer ce fichier, cependant.java.io.File
vous parlez. Est-il une autre classe nomméeFile
n'importe où dans votre projet que vous pouvez (accidentellement) utiliser?La création d'un
File
instance ne pas créer un fichier sur le système de fichiers et les codes affichée à faire ce que vous nécessitent.File
vous avez besoin d'invoquerFile.createNewFile()
.for
la boucle ne sera pas de créer des fichiers. Il affichera le message "Nouveau fichier créé ...." mais ce fichier n'existe pas sur votre système de fichiers. Ajouterfile.exists()
pour votre message et il serafalse
(en supposant qu'ils n'existent pas actuellement).À partir de Java 7 vous pouvez utiliser
java.nio.fichier.Les fichiers.existe
:Dans le Oracle tutoriel vous pouvez trouver quelques détails à ce sujet:
Les Fichiers.existe méthode a beaucoup de mauvaises performances dans le JDK 8, et peut ralentir une application de manière significative lorsqu'il est utilisé pour vérifier les fichiers qui n'existe pas réellement.
Ceci peut être appliqué aussi pour les Fichiers.noExists, Fichiers.isDirectory et Fichiers.isRegularFile
Après cela, vous pouvez utiliser les éléments suivants :