I have source files in Cp1250 encoding. All of those file are in dirName directory or its subdirectories. I would like to merge them into one utf-8 file by adding their contents. Unfortunately I get empty line at the beginning of result file.
public static void processDir(String dirName, String resultFileName) {
    try {
        File resultFile = new File(resultFileName);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(resultFile), "utf-8"));
        Files.walk(Paths.get(dirName)).filter(Files::isRegularFile).forEach((path) -> {
            try {
                Files.readAllLines(path, Charset.forName("Windows-1250")).stream().forEach((line) -> {
                    try {
                        bw.newLine();
                        bw.write(line);                     
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
        bw.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
The reason is that I don't know how to detect the first file in my stream.
I came up with extremely stupid solution which does not rely on streams so it is unsatisfactory:
public static void processDir(String dirName, String resultFileName) {
        try {
            File resultFile = new File(resultFileName);
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(resultFile), "utf-8"));
            Files.walk(Paths.get(dirName)).filter(Files::isRegularFile).forEach((path) -> {
                try {
                    Files.readAllLines(path, Charset.forName("Windows-1250")).stream().forEach((line) -> {
                        try {
                            if(resultFile.length() != 0){
                                bw.newLine();
                            }
                            bw.write(line);
                            if(resultFile.length() == 0){
                                bw.flush();
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            bw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Also I could use static boolean but that is total gibberish.
 
     
     
    