while循环创建多个文件

While loop to create multiple files

我正在尝试制作一个 Java 应用程序,它将接收包含多条消息的批量文件,然后将它们拆分并将每条消息写入其自己的文件。我遇到的问题是它只创建一个包含最后一条消息的文件,所以我认为它会覆盖 while 循环的每次迭代。我的代码如下:

public void writeFile(StringBuilder contents, String outputFilePath) throws IOException {

    String messages = contents.toString();
    StringTokenizer st = new StringTokenizer(messages, "$");

    FileWriter fileWriter = null;
    BufferedWriter bufferedFileWriter = null;

    while (st.hasMoreTokens()) {

        int i = 0;
        i++;

        File output = new File(outputFilePath + "_" + i + ".txt");

        try {       
            fileWriter = new FileWriter(output);
            bufferedFileWriter = new BufferedWriter(fileWriter);
            bufferedFileWriter.append(st.nextToken());
        }
        finally {
            if (bufferedFileWriter != null) {
                bufferedFileWriter.close();
            }
            if (fileWriter != null) {
                fileWriter.close();
            }   

        }
    }
}

移动i的声明:

int i = 0;

while 循环之外:

int i = 0;
while(st.hasMoreTokens(){
    ...
}

这样您就不会在每次迭代时都覆盖它。始终保留 1.

的值

更好的方法是使用 for:

for(int i = 1; st.hasMoreTokens(); i++){
    ...
}

这给你留下了一个很好的范围变量i只能在循环内访问

您可以在外循环中使用 try-with-resource 和 i 来简化代码。

public void writeFile(StringBuilder contents, String outputFilePath) throws IOException {

    StringTokenizer st = new StringTokenizer(contents.toString(), "$");

    for (int i = 0; st.hasMoreTokens(); i++) {
        File output = new File(outputFilePath + "_" + i + ".txt");
        try(FileWriter fileWriter = new FileWriter(output)) {
            fileWriter.append(st.nextToken());
        }
    }
}