I'm writing a program that writes sets of observations in the form of a String array (from User input) to file. I am able to write an observation to a .txt file and then add a new observation without removing the previous data, but all my data is on the same line. I need each set of observations to be on a separate line. Additionally I will need to be able to access the file later on and read from it.
My code currently looks like this: (observation is the string array)
for(int i = 0; i < observation.length; i++) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("birdobservations.txt", true))) {
String s;
s = observation[i];
bw.write(s);
bw.flush();
} catch(IOException ex) {}
}
My output currently looks like this: CrowMOsloMay2015JayMOsloJune2012CrowMOsloMay2015RobinFBergenMay2012
I would like it to look like this:
Crow M Oslo May2015
Jay M Oslo June2012
...etc
How do I do this? I assume I need some kind of loop, but I've been stuck on figuring this out for a while now.
Sorry I can't comment Brian Agnew's answer because of my reputation, so I write it here.
Seems you never have any spaces in your array items, so you can successfully use them as a separators in your .txt file. When reading, just read the file line by line and separate items by split(" ") method.
You need to push a line separator into the buffer.
Here's the code
Why not iterate within your
try{}
block and use BufferedWriter.newLine() after each write ?If you need to be able to read the values back in later, you need to consider some unambiguous output format. Perhaps the simplest solution is a CSV format (I note your output data has spaces - you would need to separate your entries using something other than spaces in that case)