JAVA write new row to .CSV file [duplicate] - java

This question already has answers here:
How to append text to an existing file in Java?
(31 answers)
Closed 6 years ago.
How can I write a new row of data to a .CSV file that already has data in it. So far my code just clears the file and doesn't actually write anything?
BufferedReader br = null;
BufferedWriter bw = null;
String fileString = "patients.csv";
String fileLine = "";
File file = new File(fileString);
br = new BufferedReader(new FileReader(file));
FileWriter fw = new FileWriter(fileString);
bw = new BufferedWriter(fw);
while((fileLine = br.readLine()) != null){
bw.write(fileLine);
}
br.close();
bw.close();

specify true in the constructor java FileWriter to know that the true and append be added to the end of the file if you place it does not overwrite information
FileWriter fw = new FileWriter(fileString,true);

If you want to append to a file using FileWriter then use this Constructor
As per Javadocs
Constructs a FileWriter object given a File object. If the second
argument is true, then bytes will be written to the end of the file
rather than the beginning.
But, back to your code, you will only need to write new data to the FileWriter and not rewrite existing data.

Related

Java how to add new line to file [duplicate]

This question already has answers here:
How to append text to an existing file in Java?
(31 answers)
Closed 2 years ago.
Im trying to add multiple strings to a file.
FileWriter myWriter = new FileWriter("cache.txt");
BufferedWriter bw=new BufferedWriter(myWriter);
bw.write(marker);
bw.newLine();
bw.close();
But whenever I write a new String it keeps overriding.
So I only have one string in my file.
How would I make it add a new line to the file.
Here is an example
What should happen.
file(cache.txt):
fd174d5b4bbc85295a649f9d70a4adf4
9b854017b04d62732ac00f2ee8007968
...
What happens for me
file(cache.txt):
9b854017b04d62732ac00f2ee8007968(last entry)
Because that's what BufferedWriter's .write is supposed to do.
If the file doesn't exists, create and write to it.
If the file exists, truncate (remove all content) and write to it
To append, use this:
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
out.println("text");
out.close();
} catch (IOException e) {
//exception handling
}
Use the "append" flag to the FileWriter constructor:
FileWriter myWriter = new FileWriter("cache.txt", true);
Otherwise the file will be reset to the beginning each time it is opened.

How to load a preexisting PrintWriter into Java? [duplicate]

This question already has answers here:
How to append text to an existing file in Java?
(31 answers)
Java: How to read a text file
(9 answers)
Closed 5 years ago.
I have a txt file that I want to load into Java, and I've been trying to use
PrintWriter writer = new PrintWriter(new File("location/name.txt"));
But instead of loading the existing file, it writes over the old one and creates a new blank one. How can I load the existing file into Java?
You must use a Reader instead of Writer.
There are various ways to read a text file in Java e.g. you can use FileReader, BufferedReader or Scanner to read a text file. Each class has its own purpose e.g. BufferedReader is used to buffer data for reading fast, and Scanner provides parsing ability.
Example using BufferedReader :
public class ReadFile {
public static void main(String[] args)throws Exception
{
File file = new File("C:\\location\\test.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
while ((st = br.readLine()) != null)
System.out.println(st);
}
}
I think this is what you want:
try(PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("location/yourFileName.txt", true)))) {
pw.println("what you want to write to the file");
pw.close();
} catch (IOException e) {
//Exception handling goes here.
}
The FileWriter constructor's second argument is what sets the append condition. Also, as stated in the comments(and pretty obvious) that you need a reader to load or input data.
You can try
File f = new File(filePathString);

How to remove line from txt file with buffered reader java [duplicate]

This question already has answers here:
Find a line in a file and remove it
(17 answers)
Closed 5 years ago.
I need to remove lines from txt file a
FileReader fr= new FileReader("Name3.txt");
BufferedReader br = new BufferedReader(fr);
String str = br.readLine();
br.close();
and I don't know the continue of the code.
You can read all lines and store them in a list. Whilst you're storing all lines, assuming you know the line you want to remove, simply check for the lines you don't want to store, and skip them. Then write the list content to a file.
//This is the file you are reading from/writing to
File file = new File("file.txt");
//Creates a reader for the file
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
//This is your buffer, where you are writing all your lines to
List<String> fileContents = new ArrayList<String>();
//loop through each line
while ((line = br.readLine()) != null) {
//if the line we're on contains the text we don't want to add, skip it
if (line.contains("TEXT_TO_IGNORE")) {
//skip
continue;
}
//if we get here, we assume that we want the text, so add it
fileContents.add(line);
}
//close our reader so we can re-use the file
br.close();
//create a writer
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
//loop through our buffer
for (String s : fileContents) {
//write the line to our file
bw.write(s);
bw.newLine();
}
//close the writer
bw.close();

How to append a new line to beginning of an existing file in java?

Assuming I have a txt file located in /mypath/sampletext.txt. How do I append a new line to the beginning of the file with the following in Java while preserving the original text file's contents?:
String startStr ="--Start of File--";
Looking for a way to do this without having to create an intermediary 2nd file and make modifications only to the existing file if possible.
Read file contents first, prepend new line to that like contents = newLine + contents, then write the new conent in the same file (dont append).
well,three ways ,may help you
1.
//true: is append text to fie
FileWriter write = new FileWriter("file_path",true);
writer.write(content);
//open randomFile and "rw"
randomFile = new RandomAccessFile("file_path", "rw");
// file length
long fileLength = randomFile.length();
//point to end index
randomFile.seek(fileLength);
//write
randomFile.writeBytes(content);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
out.write(conent);
New answer is updated...
In this I've use few more FileIO classes & may be their one is deprecated API but If you are aware with Java FileIO classes you can easily fix it.
Here I append new line at the start of file rather than append it to the end of file..
If any issue please comment again....
Try this, I think it will help you..
try
{
//Append new line in existing file.
FileInputStream fr = new FileInputStream("onlineSoultion.txt");
DataInputStream dr = new DataInputStream(fr);
String startStr = "--Start of File--\n";
//String startStr;
while (dr.available() > 0) {
startStr += dr.readLine();
//System.out.println(startStr);
}
dr.close();
fr.close();
FileOutputStream writer = new FileOutputStream("onlineSoultion.txt");
writer.write((new String()).getBytes());
writer.close();
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("onlineSoultion.txt", true)));
out.println(startStr);
out.close();
}

Read and write to file, but overwrites the file

I'm trying to figure out why this doesn't work. All the files which are shown actually exist. The 'logging.toString()' is a .txt file and it reads all the text in the logging and writes it back with the String which I want to be added. Although when I do this, it overwrites it. But I dont want that. Help?
try{
FileWriter fstream = new FileWriter(logging.toString());
BufferedWriter out = new BufferedWriter(fstream);
FileInputStream fstreams = new FileInputStream(logging);
BufferedReader br = new BufferedReader(new InputStreamReader(fstreams));
String strLine;
while ((strLine = br.readLine()) != null){
htmlTextArea = htmlTextArea + strLine + "\n";
}
out.write(htmlTextArea + logto);
out.close();
} catch (Exception ex){}
Why wouldn't it? You don't pass an append flag:
FileWriter(String filename, boolean append)
The API docs are your friend; they're often helpful for understanding behavior.
Change this line
FileWriter fstream = new FileWriter(logging.toString());
to
FileWriter fstream = new FileWriter(logging.toString(), true);
That way, you tell Java you wish to APPEND the file. There's more in the Javadocs for FileWriter.
Because that's the way FileWriter is implemented.
If you want to append, you should use a different constructor: new FileWriter( logging.toString(), true );
If you want to add something to file but not overwrite it use
FileWriter fstream = new FileWriter(logging.toString(),true);

Categories

Resources