Java: BufferedReader liest nur die Hälfte der Text-Datei.

MagicFlo

Mitglied
Hallo zusammen,
ich hab hier ein kleines, privates Projekt gestartet in dem ich meine Spotify Playlist radomize.
Folgendes Problem ist aufgetaucht: wenn ich den Code Starte, werden immer nur die hälfte aller Links eingelesen, geshuffled und dann in meine Finale Liste geschrieben. Aus was für einen Grund funktioniert der Code immer nur mit der hälfte, aller Links?

Java:
import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Collections;


public class RandomizeLinks {


  public static void main(String[] args) throws IOException {

    ArrayList<String> list = readLinks();

    System.out.println( "Originale Liste: " + list );

    Collections.shuffle( list );

    System.out.println( "Shuffled Liste: " + list );

    save( list );

  }


  public static ArrayList<String> readLinks() throws IOException {

    File file = new File( "C:/Florian/CAT-Workspace/zzz-RandomizeLinks/src/LinkList.txt" );

    BufferedReader br = new BufferedReader( new FileReader( file ) );

    ArrayList<String> list = new ArrayList<String>();

    int lines = 0;


    while (br.readLine() != null) {

      list.add( br.readLine() );

      lines++;

    }


    br.close();

    System.out.println( "Lines of LinkList: " + lines );


    return list;

  }


  public static void save(ArrayList<String> list) throws IOException {

    FileWriter outFile = new FileWriter( "C:/Florian/CAT-Workspace/zzz-RandomizeLinks/src/FinalList.txt" );

    BufferedWriter outStream = new BufferedWriter( outFile );

    int lines = 0;


    for (int x = 0; x < list.size(); x++) {

      outStream.write( list.get( x ) + "\n" );

      lines++;

    }

    System.out.println( "Lines of FinalList: " + lines );

    outStream.close();

  }

}
 

Anhänge

Zuletzt bearbeitet:
Java:
while (br.readLine() != null) { // <- liest eine Zeile und verwirft sie
  list.add( br.readLine() ); // <- liest die nächste Zeile
  lines++;
}
 
Java:
while (br.readLine() != null) {
     list.add( br.readLine() );
In der While-Bedingung liest du eine Zeile und beachtest sie nicht. Dann liest du innerhalb der while-Schleife die nächst Zeile.
 

Neue Themen


Zurück
Oben