Avant de commencer, j'aimerais dire que j'ai passé 4 heures aujourd'hui, 6 heures hier et 3 heures avant cette recherche sur cette question. J'ai lu tous les articles que je peux trouver, suivi toutes les instructions à la lettre, redémarré mon projet, réinstallé mon IDE (Netbeans) et même fraîchement installé mon système d'exploitation, et je n'ai pas trouvé un seul conseil utile, alors j'ai pensé J'avais besoin de demander de l'aide.

ET OUI, J'AI PLACÉ LE FICHIER AU BON ENDROIT ... En fait, j'ai placé le fichier dans TOUS les emplacements. Il y a une copie dans chaque dossier de mon projet et également une copie dans le dossier Projets global, ainsi que dans Mes documents. J'ai vérifié, modifié et mis par défaut le répertoire racine à plusieurs reprises. VEUILLEZ ne pas me dire d'utiliser simplement un gestionnaire d'exceptions. Le fichier que le programme lit est garanti d'exister et de contenir quelque chose.

Voici donc ma question: j'essaye d'entrer et de lire à partir d'un fichier, cependant, le résultat est toujours que le fichier ne peut pas être trouvé. Voici un exemple de mon code (et cela dépend vraiment de cet atm):

package project2;
import java.io.FileReader;
import java.io.*;
import java.util.Scanner;
public class Project2 {
    public static void main(String[] args) {
        FileReader inputFile = new FileReader(args[0]);
    }
}

Voici deux des erreurs que j'obtiens (j'obtiens également des erreurs Filenotfound, mais je ne pense pas que je dois ajouter cela):

Exception in thread "main" java.lang.RuntimeException: Uncompilable source 
code - unreported exception java.io.FileNotFoundException; must be caught or 
declared to be thrown
    at project2.Project2.main(Project2.java:14)
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: 
Java returned: 1
BUILD FAILED (total time: 1 second)

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1540)
    at project2.Project2.main(Project2.java:24)
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: 
Java returned: 1
BUILD FAILED (total time: 0 seconds)

C'est tout. Le nom du fichier provient des arguments, et j'ai essayé toutes les variantes possibles du nom. J'ai essayé de nommer le fichier en dehors des arguments, comme juste le nom du fichier lui-même et aussi avec un chemin de fichier explicite.

L'utilisation d'un scanner ne me laissera rien lire. FileReader ne fonctionnera même pas.

Le fichier texte n'a pas de formatage ou de caractères spéciaux, et j'ai utilisé celui qui m'a été fourni et plusieurs que j'ai tapés à la main juste au cas où il y aurait un problème avec celui qui m'a été donné. Je me suis également assuré que ".txt" n'est jamais lu ou utilisé deux fois (je garde mes extensions, de toute façon). J'ai vérifié les attributs et les permissions de tous les fichiers et du programme Netbeans lui-même. Je me suis également assuré que les fichiers texte étaient inclus dans la construction du projet.

Je n'utilise aucun code supplémentaire pour le moment, car je ne peux rien faire tant que je ne suis pas sûr de pouvoir lire un fichier, puis en générer un également. Je sais aussi que les fichiers texte ne sont pas corrompus car je peux très bien les lire en Python, cependant, je dois utiliser Java et je dois utiliser Netbeans.

C'est un nouveau problème pour moi, j'ai toujours pu lire correctement les fichiers et j'ai épuisé mes options. J'ai vraiment besoin d'aide si quelqu'un a des idées.

-1
Jarbcd 20 avril 2017 à 23:45

3 réponses

Meilleure réponse

Cela lit un fichier sans problème. Je suppose que vous exécutez JDK 8.

/**
 * Read a file example
 * User: mduffy
 * Date: 4/21/2017
 * Time: 7:48 AM
 * @link http://stackoverflow.com/questions/43529600/java-nothing-will-read-in-this-file
 */

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Project2 {
    public static void main(String[] args) {
        if (args.length > 0) {
            BufferedReader reader = null;
            try (BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]))) {
                bufferedReader.lines().forEach(System.out::println);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("Usage: Project2 <file>");
        }
    }
}

Voici le fichier d'entrée que j'ai utilisé:

line1
line2
hello, michael
line 4

Voici le résultat que j'ai obtenu:

java Project2 .\src\main\resources\test.txt
line1
line2
hello, michael
line 4

Process finished with exit code 0
0
duffymo 21 avril 2017 à 12:03

Je ne pense pas que Java vous dérange un fichier non trouvé est un fichier introuvable, veuillez en dire plus dans ce numéro à l'aide des écrans de fichiers et de répertoires sur lesquels vous travaillez.

J'aimerais que vous envisagiez de jeter un œil à ce qui suit:

  1. FileReader
  2. Chemin des projets sur Netbeans

J'espère que cela aidera que le code soit avec vous.

0
Community 23 mai 2017 à 10:31

La première exception ( java.lang.RuntimeException: source incompilable code ) est lancé car le code que vous nous avez montré n'est pas un code source java valide.

new FileReader(args[0]) est déclaré comme throwing FileNotFoundException et selon les règles du langage java, vous devez soit attraper cette exception, soit déclarer votre méthode main comme lançant cette exception.

Une façon de résoudre ce problème est d'écrire votre méthode principale comme ceci:

public static void main(String[] args) throws FileNotFoundException {
    FileReader inputFile = new FileReader(args[0]);
}

Il semble que vous ayez résolu ce problème car la deuxième exception (java.util.NoSuchElementException: No line found) est levée par la méthode Scanner.nextLine() si vous essayez de lire au-delà de la fin du fichier.

Puisque vous n'avez montré aucun code en utilisant la classe Scanner, il est difficile de dire où se trouve le problème dans ce cas.


En fait, j'ai placé le fichier dans TOUS les emplacements. Il y a une copie dans chaque dossier de mon projet et également une copie dans le dossier Projets global, ainsi que dans Mes documents.

Ne fais pas ça. Vous créez un désordre avec des fichiers qui seront difficiles à nettoyer. Si vous voulez savoir quel fichier votre programme est en train de lire, l'ajout de la simple ligne suivante vous indique le chemin exact et le nom du fichier:

System.out.println(new File(args[0]).getAbsolutePath());

Avez-vous déjà essayé avec un exemple simple et minimal comme celui-ci:

package project2;
import java.io.FileReader;
import java.io.*;
import java.util.Scanner;
public class Project2 {
    public static void main(String[] args) {
        System.out.println(new File(args[0]).getAbsolutePath());
        FileReader inputFile = new FileReader(args[0]);
        try (Scanner s = new Scanner(inputFile)) {
            while (s.hasNextLine()) {
                System.out.println(s.nextLine());
            }
        }
    }
}

Il devrait imprimer le nom de votre fichier avec le chemin complet et ensuite le contenu du fichier ligne par ligne.

2
Thomas Kläger 22 avril 2017 à 11:41