Comment puis-je lire un nombre, une chaîne ou un caractère d'un fichier. Je trouve de nombreuses façons, mais je ne sais pas quelle est la meilleure approche claire. Je veux effectuer des opérations d'entrée / sortie comme la console système.
J'ai créé 2 fichiers input.in et output.out et je veux lire un nombre depuis input.in et imprimer le nombre dans output.out. p>
Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at MainClass.main(MainClass.java:9)
Je veux d'abord tester si fonctionne pour lire à partir d'un fichier mais j'ai obtenu ceci:
import java.util.Scanner; import java.io.*; public class MainClass { public static void main(String[] args) throws IOException { File file = new File("input.in"); Scanner scanner = new Scanner(file); String a = scanner.nextLine(); System.out.println(a); } }
Dans l'entrée du fichier .dans j'ai:
file
i/o
3 Réponses :
Comme RealSkeptic mentionné dans les commentaires, je soupçonne que votre application ne parvient pas à trouver le fichier que vous avez fourni. Je vous suggère d'adopter le code suivant:
import java.util.Scanner; import java.io.*; public class MainClass { public static void main(String[] args) throws Exception { String filePath = "c:\\absolute\\path\\to\\input.in"; File file = new File(filePath); if(file.exists()) { System.out.println("Reading contents of file at: " + filePath) try (Scanner scanner = new Scanner(file)) { while(scanner.hasNext()) { String a = scanner.nextLine(); System.out.println(a); } } } else { System.out.println("File not found at: " + filePath); } } }
Références:
Le chemin était erroné. Pour ceux qui ont aussi mon problème voici le code des opérations d'entrée / sortie:
import java.util.Scanner; import java.io.*; public class MainClass { public static void main(String[] args) throws IOException { //the root path is your project name File in = new File("input.in"); File out = new File("output.out"); Scanner scannerInput = new Scanner(in); BufferedWriter writer = new BufferedWriter(new FileWriter(out)); String string; while(scannerInput.hasNextLine()) { string = scannerInput.nextLine(); writer.write(string); writer.newLine(); } writer.flush();//very important scannerInput.close(); writer.close(); } }
FYI: Cette réponse a été signalée comme étant de mauvaise qualité en raison de sa longueur et de son contenu. Vous voudrez peut-être l'améliorer pour éviter les votes négatifs.
Vous pouvez utiliser FileInputStream
et FileOutputStream
pour ce faire ..
J'espère que cela vous servira
import java.util.Scanner; import java.io.*; public class MainClass { public static void main(String[] args) throws IOException { FileInputStream inputStream = null; FileOutputStream outputStream = null; Scanner sc = null; try { inputStream = new FileInputStream("IN File"); outputStream = new FileOutputStream("OUT File"); sc = new Scanner(inputStream, "UTF-8"); while (sc.hasNextLine()) { String line = sc.nextLine(); System.out.println(line); byte[] strToBytes = line.getBytes(); outputStream.write(strToBytes); outputStream.write(System.getProperty("line.separator").getBytes()); } // note that Scanner suppresses exceptions if (sc.ioException() != null) { throw sc.ioException(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (inputStream != null) { inputStream.close(); } if (sc != null) { sc.close(); } } } }
Si vous êtes débutant, je vous conseille d'éviter la classe
File
et de vous en tenir à la classePath
à la place dans la mesure du possible. Avez-vous vérifié que votre fichierinput.in
contient bien une ligne?Il contient 2 lignes: première ligne: fichier, deuxième entrée / sortie. J'ai mis les fichiers dans src> package par défaut
Il ne lit peut-être pas le fichier
input.in
que vous pensez lire. Vous devriez lui donner un chemin complet ou apprendre à utiliser des ressources. Mais pour un débutant, essayez avec un chemin complet.Le chemin était faux, merci!