gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:19:53 26 4
gpt4 key购买 nike

关于使用 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");
}
}

package file;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.io.Serializable;
import java.io.File;
import java.io.IOException;

public class FileWrite {

public void serializeAddress(String city, String country){

try
{

File file = new File("B:\\outLarge.txt");

if (!file.exists())
{
file.createNewFile();
}

FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(city + " " + country);
bw.close();

System.out.println("Done");



}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

但是结束输出文件只有一个结果,如何让它复制所有内容?我在想 buffered-writer 不知何故需要在循环中在现有的之上写新的?但不确定如何实现。

非常感谢。

最佳答案

您每次调用序列化方法时都会覆盖文件内容,因为您没有以追加模式打开文件。为防止覆盖,以 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();
}
}

关于java - 如何使输出具有多个字符串(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14347918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com