16 June 2011

How to append text to a txt file using Processing

Sometimes it would be useful to have a function to save data to a text file.
I plan to save some of my Arduino sensor data to a text file using the Processing language.
Ninety percent of the following code comes from this forum posting. Thank goodness for the internet, and for people like PhiLho and Cedric. I modified their code and ended up with this (to suit my own project):

Processing Sketch

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* =====================================================================
     Project : Append data to a text file
      Author : ScottC
     Created : 16 Nov 2011  (Updated 26 Aug 2014)
 Description : Use the Processing language to store data on
               the computer. This code can be used to create a
               new text file or append to an existing file.
               
Processing Version tested : 2.2.1
Reference: http://processing.org/discourse/yabb2/YaBB.pl?num=1251025598/4

=============================================================================== */

import java.io.BufferedWriter;
import java.io.FileWriter;

void setup(){
   String myFileName = "C:/SensorData/mySensorData.txt";
   String mySensorData = "10,20,30,40,50";
   
   //To insert data into a new file
   //saveData(myFileName, mySensorData, false);
   
   //To append data to an existing file
   saveData(myFileName, mySensorData, true);
}

void draw(){
}

/* --------------------------------------------------------------
  SaveData:
  - This code is used to create/append data to a designated file.
  - fileName = the location of the output data file (String)  
  - newData = the data to be stored in the file (String)
  - appendData = true if you want to append
               = false if you want to create a new file
  --------------------------------------------------------------*/
void saveData(String fileName, String newData, boolean appendData){
  BufferedWriter bw = null;
  try {  
    FileWriter fw = new FileWriter(fileName, appendData);
    bw = new BufferedWriter(fw);
    bw.write(newData + System.getProperty("line.separator"));
  } catch (IOException e) {
  } finally {
    if (bw != null){
      try { 
        bw.close(); 
      } catch (IOException e) {}  
    }
  }
}
 
 

This will append the sensor data of  10,20,30,40,50 to the end of mySensorData.txt file.
If I wanted to create a new text file instead, then I would call saveData in the following way:
saveData(myFileName, mySensorData, false);

If you found this code useful, please support me here:  
 


2 comments:

  1. Wouldn't be it simpler with createWriter() method? (https://processing.org/reference/createWriter_.html)

    ReplyDelete
    Replies
    1. That's probably true Osqui. The Processing IDE has new functionality that was not present at the time I wrote this tutorial - but definitely worth looking at for anyone wanting to do this.

      Delete

Feel free to leave a comment about this tutorial below.
Any questions about your particular project should be asked in the ArduinoBasics forum.

Comments are moderated due to large amount of spam.