Должно быть так: из первого файла копирует в temp, потом перезаписывает данные в первом файле данными из второго, далее с append дописывает данные из temp в первый файл. А по факту: заполняет первый файл данными из второго. В чём причина?
package com.javarush.task.task18.task1819;

/*
Объединение файлов
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileOne = "C:\\javaTest\\1.txt";
        String fileTwo = "C:\\javaTest\\2.txt";
        FileInputStream fileInputStreamFileOne = new FileInputStream(fileOne);
        FileOutputStream fileOutputStreamFileOne = new FileOutputStream(fileOne);
        FileOutputStream fileOutputStreamFileOneAppendTrue = new FileOutputStream(fileOne, true);
        FileInputStream fileInputStreamFileTwo = new FileInputStream(fileTwo);
        FileOutputStream fileOutputStreamTemp = new FileOutputStream(new File("C:\\javaTest\\temp.txt"));
        FileInputStream fileInputStreamTemp = new FileInputStream("C:\\javaTest\\temp.txt");
        while (fileInputStreamFileOne.available() > 0) {
            fileOutputStreamTemp.write(fileInputStreamFileOne.read());
        }
        while (fileInputStreamFileTwo.available() > 0) {
            fileOutputStreamFileOne.write(fileInputStreamFileTwo.read());
        }
        while (fileInputStreamTemp.available() > 0) {
            fileOutputStreamFileOneAppendTrue.write(fileInputStreamTemp.read());
        }
        fileInputStreamFileOne.close();
        fileInputStreamFileTwo.close();
        fileInputStreamTemp.close();
        fileOutputStreamFileOne.close();
        fileOutputStreamTemp.close();


    }
}