После передачи файла через ServerSocket сервер присылает строку null
Создал сервер и клиент, который в начале отправляет текст, после этого передаёт файл клиенту, далее он информирует клиента о передаче файла, но в ответ клиент получает null, это происходит из-за передачи файла, почему?

public class server {
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
int count = 0;
String namePackage;
int i = 1;
ServerSocket serverSocket = new ServerSocket(8000);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Client accepted " + (count++));
OutputStream out = clientSocket.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(clientSocket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
writer.write("Введите слово Сборка для сборки\n");
writer.flush();
String mess = reader.readLine();
if (Objects.equals(mess, "Сборка")) {
writer.write("Введите имя пакета\n");
writer.flush();
namePackage = reader.readLine();
//Sborka sborka = new Sborka(namePackage, i);
//sborka.main();
writer.write("Ваш файл готов\n");
writer.flush();
FileDownload(clientSocket, out);
}else {
writer.write("Ваш запрос не распознан\n");
writer.flush();
System.out.println(mess);
}
writer.write("Файл был передан\n");
writer.flush();
out.close();
writer.close();
reader.close();
clientSocket.close();
}
}
public static void FileDownload(Socket clientSocket, OutputStream out) throws IOException {
InputStream in = new FileInputStream("C:\\ycheba\\Clienti\\AlGot\\app-debug.apk");
int cou;
byte[] buffer = new byte[4096]; // or 4096, or more
while ((cou = in.read(buffer)) > 0)
{
out.write(buffer, 0, cou);
out.flush();
}
in.close();
}
}
А это клиент
public class Client {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
Socket clientSocket = new Socket("localhost", 8000);
OutputStreamWriter writer = new OutputStreamWriter(clientSocket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String mess = reader.readLine();
System.out.println(mess);
mess = sc.next();
writer.write(mess+ "\n");
writer.flush();
mess = reader.readLine();
System.out.println(mess);
mess = sc.next();
writer.write(mess+ "\n");
writer.flush();
mess = reader.readLine();
System.out.println(mess);
InputStream in = clientSocket.getInputStream();
FileOutputStream out = new FileOutputStream("C:\\ycheba\\Clienti\\ak47debug.apk");
int cou;
byte[] buffer = new byte[4096]; // or 4096, or more
while ((cou = in.read(buffer)) > 0)
{
out.write(buffer, 0, cou);
}
out.close();
mess = reader.readLine();
System.out.println(mess);
in.close();
writer.close();
reader.close();
clientSocket.close();
}
}
А также не работает переданный apk, нужно передавать архивом?