Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie vergleiche ich die beiden Int? Konvertieren in String und dann mit equals vergleichen schlug fehl...
Code:
import java.io.*;
public class Main
{
/** Creates a new instance of Main */
public Main()
{
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//datei einlesen und zeilen in einzelne strings zerlegen
//dann .dat für ps schreiben und eintrag in katalog.txt
try
{
String zeile="";
String id="";
int i=0;
int status=0;
int z=0;
String tmp="";
File f = new File("E:\\privat\\daten\\hyg1_1.csv");
File o = new File("E:\\privat\\daten\\hip.txt");
BufferedReader b = new BufferedReader(new FileReader(f));
BufferedWriter w = new BufferedWriter(new FileWriter(o));
while ((zeile=b.readLine()) != null)
{
while ((i=zeile.indexOf(",")) != -1)
{
id=zeile.substring(0, i);
if (z == 1)
{
w.write(id);
w.newLine();
}
zeile=zeile.substring(i+1, zeile.length());
z++;
System.out.println(Integer.toString(z));
}
id=zeile;
status++;
z=0;
System.out.println("Fortschritt: " + Integer.toString(status) + " von 87475 (" + Integer.toString((status*100)/87475) + " %)");
}
b.close();
w.close();
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
}
Das geht... Nur wie mein Vorredner schon erwähnt hat, ist z wohl nur dann 1, wenn Du mehr als 2 Werte in einer Zeile hast. Denn bei 2 Werten gibt es nur ein Komma, daher wird die Schleife nur einmal durchlaufen.
Hmm... die Abfrage z==1 bewirkt ja, dass von der Zeile die zweite Spalte in die Datei geschreiben wird (an der Stelle läuft z ja nicht von 1 bis (Anzahl Spalten), sondern von 0 bis (Anzahl Spalten-1); das z++ kommt ja erst später).
Bei mir funktioniert das auch: eine Datei mit einer Zeile "a,b,c" führt zu einer Ausgangsdatei mit einer Zeile "b"
Hat jmd. ne Idee wieso bei der Datei nix ausgegeben wird, obwohl z =1 wird?
Und wenn ich die erste nehmen (.csv.zip) werden mir Zeilen ausgegeben, die teilweise gar nicht enthalten sind.
Wenn ich eine csv-Datei selber erstelle und da a,b,c reinschmeiße gehts...
Ist etwas mühsam, die ganze Datei zu vergleichen; auf den ersten Blick sieht es aber gut aus: die Ausgabedatei enthält die "Hip"-Spalte der Eingangsdatei.
ich habe hier deine code vereinfacht und suche von Fehlerhaften zeilen ermöglicht
kommentare anschauen!
Code:
import java.io.*;
public class Main
{
/** Creates a new instance of Main */
public Main()
{
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
//datei einlesen und zeilen in einzelne strings zerlegen
//dann .dat für ps schreiben und eintrag in katalog.txt
try
{
String[] sarr;//von Slava
String zeile="";
String id="";
int i=0;
int status=0;
int z=0;
String tmp="";
File f = new File("E:\\privat\\daten\\hyg1_1.csv");
File o = new File("E:\\privat\\daten\\hip.txt");
BufferedReader b = new BufferedReader(new FileReader(f));
PrintWriter w = new PrintWriter(new BufferedWriter(new FileWriter(o)));
while ((zeile=b.readLine()) != null)
{
sarr=zeile.split(",");//ganze zeile in arrayholen
if(sarr.length!=12){
System.out.println("anomali in der zeile "+status);//es stimt vas mit anzahl der Komas nicht
System.out.println(zeile);//um die Defecte Zeile ansehen;
continue;//dies mal schreiben wir nicht
}
w.println(sarr[1]);//zweite spalte schreiben
status++;
System.out.println("Fortschritt: " + Integer.toString(status) + " von 87475 (" + Integer.toString((status*100)/87475) + " %)");
}
b.close();
w.close();
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
}
Nein. Da aber in der Ausgabedatei keine einzige Zeile steht muss er ja schon bei der ersten Zeile stocken. Komischerweise wenn ich die zeilen rauskopiere und eine neue CSV-Datei anlege geht es.
Erkennt er den Zeilenumbruch nicht oder ist die CSV-Datei beschädigt?
Denn die letzte auf der Webseite kann ich nicht entpacken, da mein gz-entpacker meint die ist kaput.
Wenn ich die aber einfach in .csv umbenenne bekomm ich die normal auf. Was ist da los?