Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使输出具有多个字符串(Java)_Java - Fatal编程技术网

如何使输出具有多个字符串(Java)

如何使输出具有多个字符串(Java),java,Java,在使用Java进行I/O之前,我问了一个类似的问题 我正在尝试将字符串列表复制到另一个文件中 package file; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class File { public static void main(String[] args) { FileWrite fW = new

在使用Java进行I/O之前,我问了一个类似的问题

我正在尝试将字符串列表复制到另一个文件中

package file;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class File {

    public static void main(String[] args) {

                FileWrite fW = new FileWrite();

                try (BufferedReader br = new BufferedReader(new FileReader("B:\\inLarge.dat")))
        {

            String stCurrent;

            while ((stCurrent = br.readLine()) != null) {
                System.out.println(stCurrent);
                                fW.serializeAddress(stCurrent, stCurrent);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } 


                //fW.serializeAddress("Boston", "Canada");
    }
}

但是结束输出文件只有一个结果,如何使其复制所有内容? 我在想缓冲编写器是否需要在现有编写器的基础上编写新的编写器?但不确定如何实现这一点


非常感谢。

您每次调用serialize方法时都会覆盖文件内容,因为您没有以追加模式打开文件。要防止覆盖,请在
append
模式下打开文件:

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
然而,这是一种解决方案可能设计过度的情况。为了提高效率,您确实应该只打开一次文件。下面是一个例子:

public static void main(final String[] args) {
    try {
        final BufferedReader reader = new BufferedReader(new FileReader("infile.txt"));
        final PrintWriter writer = new PrintWriter(new File("outfile.txt"));

        String inputLine;

        while((inputLine = reader.readLine()) != null) {
            writer.println(inputLine);
        }

        reader.close();
        writer.close();
    } catch(final Exception e) {
        e.printStackTrace();
    }
}

每次调用serialize方法时都会覆盖文件内容,因为您没有以追加模式打开文件。要防止覆盖,请在
append
模式下打开文件:

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
然而,这是一种解决方案可能设计过度的情况。为了提高效率,您确实应该只打开一次文件。下面是一个例子:

public static void main(final String[] args) {
    try {
        final BufferedReader reader = new BufferedReader(new FileReader("infile.txt"));
        final PrintWriter writer = new PrintWriter(new File("outfile.txt"));

        String inputLine;

        while((inputLine = reader.readLine()) != null) {
            writer.println(inputLine);
        }

        reader.close();
        writer.close();
    } catch(final Exception e) {
        e.printStackTrace();
    }
}

每次打开时都会覆盖现有文件。相反,我对它很感兴趣。 改变


每次打开时都会覆盖现有文件。相反,我对它很感兴趣。 改变


请格式化代码使其更可读请格式化代码使其更可读
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);