Java read from one file and write into another file using methods
Solution 1
You can write to another file using:
outputStream.write()
. And when you are done just outputStream.flush()
and outputStream.close()
.
Edit:
public void readAndWriteFromfile() throws IOException {
BufferedReader inputStream = new BufferedReader(new FileReader(
"original.txt"));
File UIFile = new File("numbers.txt");
// if File doesnt exists, then create it
if (!UIFile.exists()) {
UIFile.createNewFile();
}
FileWriter filewriter = new FileWriter(UIFile.getAbsoluteFile());
BufferedWriter outputStream= new BufferedWriter(filewriter);
String count;
while ((count = inputStream.readLine()) != null) {
outputStream.write(count);
}
outputStream.flush();
outputStream.close();
inputStream.close();
Solution 2
I'd use a BufferedReader
that wraps a FileReader
and a BufferedWriter
that wraps a FileWriter
.
Since you want to do it using two different methods you have to store the data in a List<String> data
to pass it between the methods.
public class ReadnWrite {
public static List<String> readFile() throws IOException {
try(BufferedReader br = new BufferedReader(new FileReader("original.txt"))){
List<String> listOfData = new ArrayList<>();
String d;
while((d = br.readLine()) != null){
listOfData.add(d);
}
return listOfData;
}
}
public static void writeFile(List<String> listOfData) throws IOException{
try(BufferedWriter bw = new BufferedWriter(new FileWriter("numbers.txt"))){
for(String str: listOfData){
bw.write(str);
bw.newLine();
}
}
}
public static void main(String[] args) throws IOException {
List<String> data = readFile();
writeFile(data);
}
}
As an alternative, if you don't have to do operations on the data between read and write I'd also do it in one method.
public class CopyFileBufferedRW {
public static void main(String[] args) {
File originalFile = new File("original.txt");
File newFile = new File(originalFile.getParent(), "numbers.txt");
try (BufferedReader br = new BufferedReader(new FileReader(originalFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile))) {
String s;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();
}
} catch (IOException e) {
System.err.println("error during copying: " + e.getMessage());
}
}
}
Newbie
Updated on July 20, 2022Comments
-
Newbie almost 2 years
I am learning Java and working on File IO and right now stuck in reading text from One file and write in another file. I am using two different methods first one for reading and displaying text in console from file #1 and using another method to write in file#2.
I can successfully read and display contents from File#1 but not sure how to write the text in file#2.
Here is the code which I have written so far:
import java.io.*; public class ReadnWrite { public static void readFile() throws IOException { BufferedReader inputStream = new BufferedReader(new FileReader( "original.txt")); String count; while ((count = inputStream.readLine()) != null) { System.out.println(count); } inputStream.close(); } public static void writeFile() throws IOException{ BufferedWriter outputStream = new BufferedWriter(new FileWriter( "numbers.txt")); //Not sure what comes here } public static void main(String[] args) throws IOException { checkFileExists(); readFile(); } }
This is just for my own learning as there are lots of examples to read and write without using different methods but I want tolearn how I can achieve through different methods.
Any help will be highly appreciated.
Regards,
-
Newbie over 9 yearsThanks #jnd but if I try by just giving outputStream.write(); java gives me error that Missing argument to match .write( ) and also how does java know that what I want to save in the file. I believe I have to put all the text from original.txt file in to an object or an array and then write the contents of array/ object in outputStream.write(); in order to write in numbers.txt file.
-
jnd over 9 yearsYou put what you want to write as the arguement. For example
outputStream.write("hello");
oroutputStream.write(15);
-
Newbie over 9 years#jnd I think you didn't get my question as I am retrieving text from file#1 and writing in file#2. Its not that I want to write anything from myself inside quotes...
-
Newbie over 9 yearsThanks #jnd for the reply. It is almost similar to what I wanted. I have achieved my desired my results through your code but can I ask you a question that e.g. If my program asks the user to press 1 to read from file and 2 to write to a new file and do I have to use this BufferedReader method and read the file if user press 2 or is there a way that if user has pressed 1 and the program has saved all the file contents in an array/ arraylist and when user has pressed 2 it writes everything from that array/arraylist into file#2.
-
jnd over 9 yearsYou can do either way. You would just make your read method return an array of strings and then pass that to your write method for it to write.
-
Maher Abuthraa over 7 yearsNo need to call outputStream.flush(); .. it will be called implicitly by outputStream.close();