Java写入文件:不会写入所有需要的文件

Java写入文件:不会写入所有需要的文件,java,Java,我没有主意了,我一整天都在尝试分离一个格式为: AN Aixas AN Aixirivall AN Aixovall AN Andorra la Vella BR Salto do Mandira BR Salto do Norte BR Salto Dollman BR Salto Grande BR Salto Pilao ... 因此,一个以国家名称“AA.txt”输入不同的文件,并将所有城市包含在这些单独的文件中。但是我的程序只写一堆文件,我不知道为什么。 我已经尝试

我没有主意了,我一整天都在尝试分离一个格式为:

AN  Aixas
AN  Aixirivall
AN  Aixovall
AN  Andorra la Vella
BR  Salto do Mandira
BR  Salto do Norte
BR  Salto Dollman
BR  Salto Grande
BR  Salto Pilao
...
因此,一个以国家名称“AA.txt”输入不同的文件,并将所有城市包含在这些单独的文件中。但是我的程序只写一堆文件,我不知道为什么。 我已经尝试了所有的编写文件类-相同的结果

这里是结果,所有工作,但对某一堆文件只

代码如下:

package com.fileorganizer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class File2 implements Cloneable {
    static InputStream fis = null;
    static BufferedReader br = null;
    static String state = "";
    static String tmp = "";
    static File file = null;
    static FileWriter fw = null;
    static BufferedWriter bw = null;

    public static void main(String[] args) {
        int a = 0;

        try {
            fis = new FileInputStream(
                    new File(
                            "/Users/Mihail/Documents/WorkSpace/Parse-Starter-Project-1.8.2/ParseStarterProject/res/raw/cities.txt"));
            br = new BufferedReader(new InputStreamReader(fis));
            String line = null;

            while ((line = br.readLine()) != null) {
                state = line.substring(0, 2);
                if (state.substring(0, 1).matches("^[A-Z]+$")
                        && state.substring(1, 2).matches("^[A-Z]+$")
                        && !tmp.equals(state)) {
                    file = new File(
                            "/Users/Mihail/Documents/WorkSpace/Parse-Starter-Project-1.8.2/ParseStarterProject/res/raw/countriesFolder/"
                                    + state + ".txt");
                    fw = new FileWriter(file.getAbsoluteFile());
                    bw = new BufferedWriter(fw);
                    tmp = state;
                }
                bw.write(line.substring(3) + "\n");
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)
                    br.close();
            } catch (Exception ex) {
            }
        }
    }
}

对于这样一个愚蠢的问题,我真的很抱歉。请帮助

您没有关闭
bw
任何位置,因此缓冲写入器缓冲区中的内容将丢失。

如果您在缓冲写入器中放入足够的内容,缓冲区应填满并写入磁盘。因此,您可能会丢失每个文件末尾的一些内容。如果文件足够小,它可以缓冲整个内容,在关闭文件时一次写入所有内容。