我有一个fileWrite()方法,它接受两个字符串值作为参数(特定的数组值)。我在for循环中包含此方法,因此它可以遍历数组并获取字符串值以写入文件
public void writeFile(String ip, String vals) {
try {
bw = new BufferedWriter(new FileWriter("Finished.txt"));
bw.write(ip + ": " + vals );
bw.newLine();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我在代码中包含方法的内容如下:
for (int i = 0 ; i < address.length ; i++) {
writeFile(address[i][0], address[i][1]);
}
似乎只将数组中的最后一个值写入文本文件。
答案 0 :(得分:3)
每次调用
时都会覆盖该文件new BufferedWriter(new FileWriter("Finished.txt"));
最好打开文件一次,写下所有数据,然后关闭它。
答案 1 :(得分:0)
就像@climbage说的那样,你正在覆盖你的文件。
我建议使用以下两种解决方案之一:
1)通过引用传递BufferedWriter并将函数名更改为writeLineToFile(为清楚起见):
void callingFunction()
{
<<get line>>
bw = new BufferedWriter(new FileWriter("Finished.txt"));
writeLineToFile(bw, ip, vals);
bw.close();
}
void writeLineToFile (BufferedWriter &bw, String ip, String vals)
{
<<do something>>
}
或
2)将要写入的整个文件分组到一个字符串数组中,并将其传递给函数:
void writeFile (std::vector<String> &ip, std::vector<String> &vals)
{
<<check that vectors are same size>>
int len = ip.size();
bw = new BufferedWriter(new FileWriter("Finished.txt"));
for (int i=0; i < len; ++i)
{
<<do something>>
}
bw.close();
}
答案 2 :(得分:0)
在循环中使用另一个构造函数
FileWriter(File file,
boolean append)
或更好
答案 3 :(得分:0)
使用for循环将其全部写在一个打开的内容中:
try
{
int length = ip.size();
bw = new BufferedWriter(new FileWriter("Finished.txt"));
for (int i = 0; i < length; i++)
{
writeLineToFile(bw, ip, vals);
}
bw.close();
}