2017-05-22 4 views
0

Ich schreibe in die CSV-Datei die BLE gescannten Ergebnisse. Was ich gerade mache, schreibt alle Daten untereinander. Die Daten bestehen aus Gerätename, rssi und MAC-Adresse. Zum Beispiel sieht die CSV-Datei wie folgt -CSV Schreiben von Daten nebeneinander

DeviceA -85 DS:DA:AB:2B:B4:AE 
DeviceB -100 2C:18:0B:2B:96:9E 
DeviceA -85 DS:DA:AB:2B:B4:AE 

Meine requireemnt so zu schreiben sind -

DeviceA -85 DS:DA:AB:2B:B4:AE DeviceB -100 2C:18:0B:2B:96:9E 
DeviceA -85 DS:DA:AB:2B:B4:AE 

Nach der letzten Spalte der Vorrichtung A, ich brauche neue Spalte von Gerät B starten statt unter Gerät A zu schreiben. Auch für Gerät C möchte ich es neben Gerät C schreiben ... Und so weiter. Hier ist mein Code zum Schreiben in CSV.

public final String DATA_SEPARATOR = ","; 
    public final String LINE_SEPARATOR = System 
      .getProperty("line.separator"); 

      try { 

       fileName = "test.csv"; 


       path = Environment.getExternalStorageDirectory() 
          + File.separator + "Documents"; 


       path += File.separatorChar + "SampleApp"; 
       File file = new File(path, fileName); 

       new File(path).mkdirs(); 
       file.createNewFile(); 

       fileStream = new OutputStreamWriter(new FileOutputStream(file)); 

       fileStream.write("sep= " + DATA_SEPARATOR + LINE_SEPARATOR); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       fileStream = null; 
      } 

private void writeElements(Object... elements) throws IOException { 


      if (fileStream != null) { 
       for (Object o : elements) { 
        fileStream.write(o.toString()); 
        fileStream.write(DATA_SEPARATOR); 
       } 
       fileStream.write(LINE_SEPARATOR); 
      } 

} 

writeElements(btDeviceName, btRSSIValue, btMacId) wird jeder nun von bluetoothScan() Methode aufgerufen und dann.

Wie kann ich nebenbei schreiben erreichen?

Antwort

0

Legen Sie 2 in dieselbe Zeile, bevor Sie eine LINE_SEPARATOR schreiben. Ändern Sie, was in Ihrem writeElements etwas wie folgt aus:

private void writeElements(Object... elements) throws IOException { 
    if (fileStream != null) { 
     for (int index = 1; index < elements.length + 1; index++) { 
      String address = elements[index - 1].toString(); 
      fileStream.write(address); 
      if(index % 2 == 0) fileStream.write(LINE_SEPARATOR); 
      else fileStream.write(DATA_SEPARATOR); 
     } 
    } 
} 

Testing:

Object[] elements = new Object[4]; 
elements[0] = "here"; 
elements[1] = "are"; 
elements[2] = "some"; 
elements[3] = "words"; 

writeElements(elements); 

Beim Öffnen der Datei:

here,are 
some,words 
+0

scheint nicht zu funktionieren :( – Del905241

+0

Versuchen Sie es erneut, bearbeitet –

+0

. Und noch einmal bearbeitet.Probieren Sie es noch einmal. –