J'ai des problèmes avec BufferedReader
Je veux imprimer les 6 lignes d'un fichier texte:
public class Reader {
public static void main(String[]args) throws IOException{
FileReader in = new FileReader("C:/test.txt");
BufferedReader br = new BufferedReader(in);
while (br.readLine() != null) {
System.out.println(br.readLine());
}
in.close();
}
Désormais, chaque fois que j'appelle la méthode readLine (), ce que je peux rassembler passe automatiquement à la ligne suivante.
Donc, je ne peux pas utiliser la condition br.readLine ()! = Null car elle avance déjà d'une ligne et j'obtiens le résultat
Line 2
Line 4
Line 6
Quelle condition dois-je utiliser pour vérifier s'il reste une nouvelle ligne dans le champ de texte?.
Merci d'avance!
C'est le problème:
while (br.readLine() != null) {
System.out.println(br.readLine());
}
Vous avez deux appels à readLine
- le premier seulement vérifie qu'il existe une ligne (mais la lit et la jette) et le second lit la ligne suivante . Tu veux:
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
Maintenant, nous appelons seulement readLine()
une fois par itération de boucle, et nous utilisons la ligne que nous avons lue pour le "avons-nous terminé?" et "imprimer la ligne" pièces.
Vous lisez les boucles line
à while
et vous lisez la ligne suivante dans la boucle. Il suffit donc de la lire dans la boucle while
String s;
while ((s=br.readLine()) != null) {
System.out.println(s);
}
Vous pouvez affecter le résultat de br.readLine()
à une variable et l'utiliser à la fois pour le traitement et la vérification, comme suit:
String line = br.readLine();
while (line != null) { // You might also want to check for empty?
System.out.println(line);
line = br.readLine();
}
private void readFile() throws Exception {
AsynchronousFileChannel input=AsynchronousFileChannel.open(Paths.get("E:/dicom_server_storage/abc.txt"),StandardOpenOption.READ);
ByteBuffer buffer=ByteBuffer.allocate(1024);
input.read(buffer,0,null,new CompletionHandler<Integer,Void>(){
@Override public void completed( Integer result, Void attachment){
System.out.println("Done reading the file.");
}
@Override public void failed( Throwable exc, Void attachment){
System.err.println("An error occured:" + exc.getMessage());
}
}
);
System.out.println("This thread keeps on running");
Thread.sleep(100);
}
vous pouvez le stocker dans un tableau, puis utiliser la ligne de votre choix ... c'est l'extrait de code que j'ai utilisé pour lire la ligne d'un fichier et le stocker dans un tableau de chaînes. J'espère que cela vous sera utile :)
public class user {
public static void main(String x[]) throws IOException{
BufferedReader b=new BufferedReader(new FileReader("<path to file>"));
String[] user=new String[30];
String line="";
while ((line = b.readLine()) != null) {
user[i]=line;
System.out.println(user[1]);
i++;
}
}
}
Peut-être que vous voulez dire ceci:
public class Reader {
public static void main(String[]args) throws IOException{
FileReader in = new FileReader("C:/test.txt");
BufferedReader br = new BufferedReader(in);
String line = br.readLine();
while (line!=null) {
System.out.println(line);
line = br.readLine();
}
in.close();
}
ou
public String getFileStream(final String inputFile) {
String result = "";
Scanner s = null;
try {
s = new Scanner(new BufferedReader(new FileReader(inputFile)));
while (s.hasNext()) {
result = result + s.nextLine();
}
} catch (final IOException ex) {
ex.printStackTrace();
} finally {
if (s != null) {
s.close();
}
}
return result;
}
Cela obtient aussi la première ligne.
Essayer:
String text= br.readLine();
while (text != null)
{
System.out.println(text);
text=br.readLine();
}
in.close();