2016-06-29 16 views
0

Ich habe einen großen Datensatz mit Textdateien (txt-Format). Die Text-Dateien sind enthalten Daten in diesem Format:So entfernen Sie einige Spalten aus einem Dataset?

Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40 
Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40 
Name, Number, Timestamp, Sensordata1, Sensordata2, ... , Sensordata40 

Jetzt muss ich die Nummer entfernen und die Zeitstempel aus jeder Zeile.

Mein Code zur Zeit:

try{ 
      // Open the file that is the first 
      // command line parameter 

      FileInputStream fstream = new FileInputStream("file.txt"); 

      // Get the object of DataInputStream 
      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String strLine; 

      //Read File Line By Line 
      while ((strLine = br.readLine()) != null) { 

       // Print the content on the console 
       System.out.println (strLine); 
      } 

      //Close the input stream 
      in.close(); 
     }catch (Exception e){//Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 

Wie kann ich dies tun in Java?

+0

Somethin g wie 'String.split (',')', holen Sie sich ein Array und entfernen Sie, was Sie brauchen – Furtiro

Antwort

1

Es gibt ein paar Möglichkeiten, wie Sie dies erreichen können, je nachdem, wie lange Sie Spalten, etc. aufspüren möchten. Am einfachsten ist es, statisch zu bestimmen, welche Spalten Sie in Ihrem Beispiel 1 und 2 in Bezug auf ein Array entfernen möchten dies kann in Ihrem Beispiel wie folgt geschehen:

package stackquestions; 

import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class StackQuestions { 


    public static void main(String[] args) { 
     try{ 
      // Open the file that is the first 
      // command line parameter 

      FileInputStream fstream = new FileInputStream("file.txt"); 

      // Get the object of DataInputStream 
      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String strLine; 

      //Read File Line By Line 
      while ((strLine = br.readLine()) != null) { 
       String[] data=strLine.split(","); 


       for(int i=0;i<data.length;i++){ 
        if(i!=1 && i!=2){ 
         System.out.println (data[i]); 
        } 

       } 
       // Print the content on the console 

      } 

      //Close the input stream 
      in.close(); 
     }catch (Exception e){//Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 
} 
} 

Eine andere Methode ist Spalten zu erkennen, basierend darauf, ob oder nicht die Zeile gelesen wird, die erste Zeile, spaltete sich die erste Zeile (die erste Zeile unter der Annahme, gelesen zu werden enthält headers und führen anschließend bei jeder Iteration eine Überprüfung des Index durch, um festzustellen, zu welcher Spalte die Daten gehören.

+0

Beachten Sie auch, da Sie eine durch Komma getrennte Datei verwenden, gibt es andere Möglichkeiten, diese Datei strukturierter zu lesen, wenn Sie in ein stabileres Programm: [link] (http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/). Diese Methode würde auch mehr Flexibilität bei der Änderung der Spalten zu einem späteren Zeitpunkt zu entfernen Daten ohne Referenzierung statisch eingegebenen Zahlen wie 1 & 2. Egal wie hoffe, es half, und viel Glück :) – D3181

+0

Große Referenz! Danke vielmals! – basti12354

0

Wenn die gleichen Werte immer in der gleichen Spalte angezeigt werden, dann können Sie einfach alle Werte zu einem ArrayList hinzufügen, die Entfernung der Werte, die Sie nicht benötigen, in loop schreiben und dann einfach schreiben zurück zur Datei.

Verwandte Themen