[JAVA] Je suis resté coincé dans le fichier

Je suis resté coincé dans la classe File

C'était un incident lorsque je faisais un programme qui utilise la classe File en Java. ..

J'ai fait un programme comme celui-ci

C'était un programme qui patrouillait dans l'arborescence des dossiers d'un dossier spécifié, lisait le texte après cela et le produisait au format CSV.

structure des dossiers

targetFolder ├folder1 │ ├folder1_folder1 │ │ ├text1.txt │ │ ├text2.txt │ │ └text3.txt │ └folder1_folder2 │ ├text.txt │ ├text2.txt │ └text3.txt ├folder2 │ ├folder2_folder1 │ │ ├text1.txt │ │ ├text2.txt │ │ └text3.txt
Ce qui suit est omis

La méthode pour faire le tour est la suivante

private static List<File> getFileInstanceList(String filePathStr) throws IOException {
    try (Stream<Path> path = Files.list(Paths.get(filePathStr))) {
        return path.map(f -> f.getFileName().toFile()).collect(Collectors.toList());
    }
}

Si vous passez le chemin du dossier comme argument, l'instance de fichier du dossier dans ce dossier sera renvoyée dans une liste.

List<File> list = getFileInstanceList("C:\Users\hoge\Desktop\targetFile\");

À la source de lecture, la liste retournée a été bouclée avec For-each, et le chemin du fichier du dossier enfant a été à nouveau passé à la méthode ci-dessus, mais ...

Une erreur est survenue

Un problème est survenu avec l'instance de fichier renvoyée par cette méthode Quand j'ai eu le chemin du dossier enfant, je n'ai pu obtenir que le nom du fichier

Lorsque j'ai vérifié JavaDoc de la classe File, j'ai trouvé la description suivante

Renvoie un objet File qui représente ce chemin. Si ce chemin est associé au fournisseur par défaut, cette méthode équivaut à renvoyer un objet File construit avec une représentation String de ce chemin. Si ce chemin est créé en appelant la méthode File to Path, il n'y a aucune garantie que l'objet File retourné par cette méthode sera égal au File d'origine.

Équivaut à renvoyer un objet File construit avec une représentation String? ??

Je ne sais pas ce que c'est, mais je pense que c'est comme ça si c'est facile à comprendre. La classe File a un constructeur qui prend String comme argument Lorsque l'instance générée à ce moment-là spécifie le chemin complet de File Parfois, seul le nom du fichier est spécifié, mais ce dernier ne peut pas conserver correctement l'état réel du fichier.

Eh bien, "C: \ Users \ hoge \ Desktop \ targetFile \ folder1" S'il y a une instance de fichier créée par "dossier1", la première serait plus réaliste.

Méthode améliorée

private static List<File> getFileInstanceList(String filePathStr) throws IOException {
   try (Stream<Path> path = Files.list(Paths.get(filePathStr))) {
        return path.map(f -> new File(f.toUri())).collect(Collectors.toList());
   }
}

Puisqu'il suffit de passer le chemin complet pour générer un fichier, je l'ai changé pour instancier un fichier avec l'URI du chemin comme argument.

Je ne suis pas sûr que même si je lis JavaDoc, Api y est-il habitué?

Recommended Posts

Je suis resté coincé dans le fichier
Où je suis resté coincé dans le "tutoriel des rails" d'aujourd'hui (05/10/2020)
Où je suis resté coincé dans le "tutoriel des rails" d'aujourd'hui (06/10/20)
Où je suis resté coincé dans le "tutoriel sur les rails" d'aujourd'hui (04/10/20)
Où je suis resté coincé dans le "tutoriel sur les rails" d'aujourd'hui (07/10/20)
Je suis resté coincé dans un clone d'un tableau à deux dimensions
J'étais accro au @Transactional de Spring
[JAVA] Project Euler, je suis resté coincé au Q8, alors prenez note
Je suis resté coincé en étudiant Java SE 7/8 Bronze
J'ai un symbole de résolution impossible dans Android Studio
J'ai eu une erreur "méthode non définie` create" "dans RSpec
Lorsque je suis passé à IntelliJ, il y avait une grande différence dans l'encodage du fichier de propriétés.
J'ai fait une roulette à Java.
J'ai lu module-info.java dans java.base
Je veux créer un fichier Parquet même en Ruby
J'ai un ActionController :: MissingExactTemplate même si j'ai un fichier
J'ai essayé la métaprogrammation avec Java
J'ai participé à Kubernetes Internal # 2
À propos de ce que j'ai fait lors de la création d'un fichier .clj avec Clojure
J'ai envoyé un e-mail en Java
Lire le fichier de propriétés Java en C #
J'ai créé un PDF avec Java.
J'ai participé au JJUG CCC 2019 Spring
Décompressez le fichier zip en Java
Enregistrer la sortie dans un fichier en Java
J'ai écrit le théorème de Gordobach en java
J'ai essayé de mettre Domino11 dans CentOS7
[Java] Ce qui est resté bloqué dans l'encapsulation
J'ai participé au JJUG CCC 2019 automne
J'ai fait une annotation en Java.
J'ai essayé d'utiliser JWT en Java
Inclure les ressources d'image dans le fichier jar
A propos du traitement de la copie de fichiers en Java
Restez coincé dans un Java Primer
J'ai participé au JJUG CCC 2019 Fall.
J'ai construit un environnement de rails avec docker et mysql, mais j'étais malade
J'ai examiné le fichier créé lors de la sélection de l'activité vide dans Android Studio
J'obtiens des erreurs: l'utilisateur doit exister dans le test du modèle unitaire
J'ai vérifié le nom du package référencé par la classe contenue dans le fichier JAR
Dans WSL2, quand j'ai fait `docker-compose up`, j'ai eu une erreur disant que le fichier sh n'a pas été trouvé.