Java从一个文件读取并使用方法写入另一个文件

时间:2015-02-03 03:42:50

标签: java file-io bufferedreader bufferedwriter

我正在学习Java并从事文件IO工作,现在正忙于从一个文件中读取文本并写入另一个文件。我使用两种不同的方法,首先用于从文件#1读取和显示控制台中的文本,并使用另一种方法在文件#2中写入。

我可以成功读取和显示文件#1中的内容,但不知道如何在文件#2中写入文本。

以下是我到目前为止编写的代码:

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();
    }
}

这仅仅是为了我自己的学习,因为有很多例子可以在不使用不同方法的情况下进行读写,但我希望能够通过不同的方法来实现。

任何帮助都将受到高度赞赏。

此致

3 个答案:

答案 0 :(得分:4)

您可以使用以下方法写入其他文件: outputStream.write()。完成后只需outputStream.flush()outputStream.close()

编辑:

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();

答案 1 :(得分:0)

以下是我如何复制文件的方式:

@scala.annotation.tailrec 
def facIter(f:Int, n:Int):Int = if (n<2) f else facIter(n*f, n-1) 
def fac(n:Int) = facIter(1,n)

答案 2 :(得分:0)

我会使用BufferedReader来包裹FileReaderBufferedWriter来包裹FileWriter

由于要使用两种不同的方法来完成此操作,因此必须将数据存储在List<String> data中,以便在方法之间传递数据。

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);
    }
}

作为一种替代方法,如果您不必在读写之间对数据进行操作,那么我也将使用一种方法来进行操作。

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());
        }
    }
}