Je travaille sur un programme Java qui lit un fichier texte ligne par ligne, chacun avec un numéro, prend chaque nombre dans un tableau, puis tente et utilise le tri par insertion pour trier le tableau. J'ai besoin d'aide pour que le programme lise le fichier texte.
Je reçois les messages d'erreur suivants:
Java.io.FileNotFoundException: 10_Random (The system cannot find the file specified) at Java.io.FileInputStream.open(Native Method) at Java.io.FileInputStream.<init>(Unknown Source) at Java.util.Scanner.<init>(Unknown Source) at insertionSort.main(insertionSort.Java:14)
J'ai une copie du fichier .txt dans mon dossier "src" "bin" et mon projet principal, mais le fichier ne peut toujours pas être trouvé. J'utilise Eclipse en passant.
import Java.io.File;
import Java.io.FileNotFoundException;
import Java.util.Scanner;
public class insertionSort {
public static void main(String[] args) {
File file = new File("10_Random");
try {
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
int i = sc.nextInt();
System.out.println(i);
}
sc.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Vous devez mettre l'extension de fichier ici
File file = new File("10_Random.txt");
Utilisez les codes suivants pour lire le fichier
import Java.io.File;
import Java.util.Scanner;
public class ReadFile {
public static void main(String[] args) {
try {
System.out.print("Enter the file name with extension : ");
Scanner input = new Scanner(System.in);
File file = new File(input.nextLine());
input = new Scanner(file);
while (input.hasNextLine()) {
String line = input.nextLine();
System.out.println(line);
}
input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
-> Cette application imprime le contenu du fichier ligne par ligne
voici quelques méthodes de travail et testées;
using Scanner
package io;
import Java.io.File;
import Java.util.Scanner;
public class ReadFromFileUsingScanner {
public static void main(String[] args) throws Exception {
File file=new File("C:\\Users\\pankaj\\Desktop\\test.Java");
Scanner sc=new Scanner(file);
while(sc.hasNextLine()){
System.out.println(sc.nextLine());
}
}
}
Voici un autre moyen de lire le fichier entier (sans boucle) en utilisant Scanner
class
package io;
import Java.io.File;
import Java.io.FileNotFoundException;
import Java.util.Scanner;
public class ReadingEntireFileWithoutLoop {
public static void main(String[] args) throws FileNotFoundException {
File file=new File("C:\\Users\\pankaj\\Desktop\\test.Java");
Scanner sc=new Scanner(file);
sc.useDelimiter("\\Z");
System.out.println(sc.next());
}
}
en utilisant BufferedReader
package io;
import Java.io.*;
public class ReadFromFile2 {
public static void main(String[] args)throws Exception {
File file=new File("C:\\Users\\pankaj\\Desktop\\test.Java");
BufferedReader br=new BufferedReader(new FileReader(file));
String st;
while((st=br.readLine())!=null){
System.out.println(st);
}
}
}
using FileReader
package io;
import Java.io.*;
public class ReadingFromFile {
public static void main(String[] args) throws Exception {
FileReader fr=new FileReader("C:\\Users\\pankaj\\Desktop\\test.Java");
int i;
while((i=fr.read())!=-1){
System.out.print((char) i);
}
}
}
Assurez-vous que le nom de fichier est correct (capitalisation correcte, extension correspondante, etc. - comme déjà suggéré).
Utilisez la méthode Class.getResource
pour localiser votre fichier dans le chemin de classe - ne vous fiez pas au répertoire actuel:
_URL url = insertionSort.class.getResource("10_Random");
File file = new File(url.toURI());
_
Spécifiez le chemin de fichier absolu via des arguments de ligne de commande:
_File file = new File(args[0]);
_
Dans Eclipse:
Personne ne semble avoir abordé le fait que vous n'entrez rien du tout dans un tableau. Vous définissez chaque int qui est lu sur "i" puis vous le sortez.
for (int i =0 ; sc.HasNextLine();i++)
{
array[i] = sc.NextInt();
}
Quelque chose dans cet effet gardera les valeurs de réglage du tableau pour le prochain entier lu.
Une autre boucle for peut afficher les nombres du tableau.
for (int x=0;x< array.length ; x++)
{
System.out.println("array[x]");
}
10_Random.txt
.int
avant de lire un int
. Il n’est pas prudent de vérifier avec hasNextLine()
et d’attendre ensuite un int
avec nextInt()
. Vous devez utiliser hasNextInt()
pour vérifier qu'il y a bien un int
à saisir. Vous décidez bien entendu de la stricte application de la règle du nombre entier par ligne.Vous devriez utiliser soit
File file = new File("bin/10_Random.txt");
Ou
File file = new File("src/10_Random.txt");
Relatif au dossier de projet dans Eclipse.
void privé loadData () {
Scanner scanner = null;
try {
scanner = new Scanner(new File(getFileName()));
while (scanner.hasNextLine()) {
Scanner lijnScanner = new Scanner(scanner.nextLine());
lijnScanner.useDelimiter(";");
String stadVan = lijnScanner.next();
String stadNaar = lijnScanner.next();
double km = Double.parseDouble(lijnScanner.next());
this.voegToe(new TweeSteden(stadVan, stadNaar), km);
}
} catch (FileNotFoundException e) {
throw new DbException(e.getMessage(), e);
} finally {
if(scanner != null){
scanner.close();
}
}
}
Chemin du fichier Cela semble être un problème ici. Veuillez vous assurer que le fichier existe dans le bon répertoire ou indiquez le chemin absolu pour vous assurer que vous pointez sur le bon fichier. Enregistrez le fichier file.getAbsolutePath () pour vérifier que le fichier est correct.
Le fichier que vous avez lu doit avoir exactement le nom de fichier que vous spécifiez: "10_random"
et non pas "10_random.txt" ni "10_random.blah", il doit correspondre exactement à ce que vous demandez. Vous pouvez modifier l'un ou l'autre pour qu'il corresponde, mais assurez-vous simplement qu'il le soit. Il peut être utile d’afficher les extensions de fichier dans le système d’exploitation utilisé.
En outre, pour l'emplacement du fichier, il doit être situé dans le répertoire de travail (même niveau) que l'exécutable final (le fichier .class) résultant de la compilation.
Tout d’abord, vérifiez l’adresse du fichier. Elle doit figurer à côté de votre fichier .Java
ou de toute adresse que vous définissez dans la variable d’environnement classpath
. Lorsque vous cochez cette case, essayez ci-dessous.
vous devez utiliser un nom de fichier par son extension dans le constructeur d'objet File, à titre d'exemple:
File myFile = new File("test.txt");
mais il existe un meilleur moyen de l'utiliser à l'intérieur de l'objet Scanner en transmettant l'adresse absolue du nom de fichier, à titre d'exemple:
Scanner sc = new Scanner(Paths.get("test.txt"));
de cette façon, vous devez également importer Java.nio.file.Paths
.