gpt4 book ai didi

java - Writer 不写入文件,只创建文件

转载 作者:行者123 更新时间:2023-12-02 10:59:44 26 4
gpt4 key购买 nike

我正在研究转换器。我加载文件,开始从中读取日期,并按年、月、日创建目录(+另一个目录),最后是那些转换后的文本文件。创建这些目录时一切都很好,但在文本文件中什么都没有或只是其中的一部分。

public static void convertFile(File fileToConvert, File whereToSave, long shift) {
BufferedReader reader = null;
BufferedWriter writer = null;
String oldDate = "";
String newDate = "";
boolean boolDate = true;

try {

for (File file : fileToConvert.listFiles()) {
reader = new BufferedReader(new FileReader(file));

boolean block = true;
String line = "";
int lineCounter = 0;
while ((line = reader.readLine()) != null) {
if (lineCounter==0) {
block = true;
} else {
block = false;
}

line = line.replaceAll("[^0-9-,:+NaN.]", "");
String[] data = line.split(",");

if (block) {
data[0] = data[0].substring(0, 10) + " " + data[0].substring(10);
data[0] = SimulatorForRealData.timeShift(data[0], shift);
// ====================================================================================
newDate = data[0].substring(0, 4) + " " + data[0].substring(5, 7) + " "
+ data[0].substring(8, 10);

String savingIn = SimulatorForRealData.createDirs(whereToSave.toString(),
data[0].substring(0, 4), data[0].substring(5, 7), data[0].substring(8, 10));

File f = new File(savingIn + "\\" + FILE_NAME + ".log");

if (!newDate.equals(oldDate) && boolDate == false) {
writer.close();
boolDate = true;

} else {
oldDate = newDate;
boolDate = false;

}

writer = new BufferedWriter(new FileWriter(f));



// =====================================================================================
writer.write("<in date=\"" + data[0].substring(0, 10) + "T" + data[0].substring(11)
+ "\" t=\"1\" >\n");
writer.write(data[0] + "\n");
writer.write(0 + " " + 0 + " " + 0 + "\n");
for (int x = 0; x <= 10; x++) {
writer.write("NaN" + " ");
}
writer.write("\n");

for (String s : data) {
if (s.equals(data[0])) {
continue;
}
writer.write(s + ";");
}
writer.write("\n");
} else {
for (String s : data) {
writer.write(s + ";");
}
writer.write("\n");
}
lineCounter++;
if (lineCounter == 118) {
lineCounter = 0;
writer.write("</in>\n\n");
}

}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

这是我执行它的方法。有人能帮我吗。我尝试了不同的“作家”,但一无所获。我怀疑关闭文件时会出现问题,但我不确定。

最佳答案

我认为你应该关闭你创建的每一个编写器,而不仅仅是最后一个。

for (File file : fileToConvert.listFiles()) {
reader = new BufferedReader(new FileReader(file));
...
writer = new BufferedWriter(new FileWriter(f));
while ((line = reader.readLine()) != null) {
....
}
writer.close();
}

仅当缓冲区溢出或关闭时,写入器才会刷新磁盘上的所有更改。

关于java - Writer 不写入文件,只创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425057/

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