Не удается перенести файл в приложение обмена сообщениями

#java

#Ява

Вопрос:

Я работаю над проектом, чтобы узнать, как создать приложение для обмена групповыми сообщениями, я посмотрел учебник и сделал его. Однако я не могу передавать файлы, я получаю SocketException ошибку, а затем множество ошибок закрытия потока. Вот мой код:

 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server {  Socket socket;  private ServerSocket serverSocket;  public Server (ServerSocket serverSocket){  this.serverSocket = serverSocket;  }  public void startServer () {  try {  while(!serverSocket.isClosed()){  socket = serverSocket.accept();  System.out.println("A new client has arrived");  ClientHandler clientHandler = new ClientHandler(socket);  Thread thread = new Thread (clientHandler);  thread.start();  FileInputStream newInputStream = new FileInputStream(""C:\Users\abdul\Documents\Greedy.pptx"");  byte newByte [] = new byte [10000];  newInputStream.read(newByte, 0, newByte.length);  OutputStream newOutputStream = socket.getOutputStream();  newOutputStream.write(newByte, 0, newByte.length);  }   } catch (IOException e) {    }  }  public void closeServerSocket () {  try {  if (serverSocket != null){  serverSocket.close();  }  } catch (IOException e){  e.printStackTrace();  }  }  public static void main (String [] args) throws IOException {  ServerSocket serverSocket = new ServerSocket (1234);  Server server = new Server (serverSocket);  server.startServer();    } } import java.io.*; import java.net.*; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; public class ClientHandler implements Runnable {  public static ArrayList lt;ClientHandlergt; clientHandlers = new ArrayList lt;gt; ();  private Socket socket;  private BufferedReader bufferedReader;  private BufferedWriter bufferedWriter;  private String username;  public ClientHandler (Socket socket) {  try {  this.socket = socket;  this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));  this.bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));  this.username = bufferedReader.readLine();  clientHandlers.add(this);  broadcastMessage("SERVER: "   username   " has entered the chat");  } catch (IOException e) {  closeEverything(socket, bufferedReader, bufferedWriter);  }  }  @Override  public void run () {  String messageFromClient;  while(socket.isConnected()){  try {  messageFromClient = bufferedReader.readLine();  broadcastMessage(messageFromClient);  } catch (IOException e){  closeEverything(socket, bufferedReader, bufferedWriter);  break;  }  }  }  public void broadcastMessage (String messageToSend){  for(ClientHandler clientHandler : clientHandlers){  try {  if(!clientHandler.username.equals(username)){  clientHandler.bufferedWriter.write(messageToSend);  clientHandler.bufferedWriter.newLine();  clientHandler.bufferedWriter.flush();  }  } catch (IOException e) {  closeEverything(socket, bufferedReader, bufferedWriter);  }  }    }  public void closeEverything (Socket socket, BufferedReader bufferedReader, BufferedWriter bufferedWriter){  clientHandlers.remove(this);  try {  if (socket != null){  socket.close();  }  if (bufferedReader != null){  bufferedReader.close();  }  if (bufferedWriter != null){  bufferedWriter.close();  }  } catch (IOException e) {  e.printStackTrace();  }  } }  import java.io.*; import java.net.*; import java.util.*  public class Client {  private Socket socket;  private BufferedReader bufferedReader;  private BufferedWriter bufferedWriter;  private String username;  public Client (Socket socket, String username) {  try {  this.socket = socket;  this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));  this.bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));  this.username = username;  } catch (IOException e) {  closeEverything(socket, bufferedReader, bufferedWriter);  }  }  public void sendMessage () {  try {  bufferedWriter.write(username);  bufferedWriter.newLine();  bufferedWriter.flush();  Scanner keyboard = new Scanner (System.in);  while (socket.isConnected()) {  String messageToSend = keyboard.nextLine();  if(messageToSend.equals("F")){  byte newByte [] = new byte [10000];  InputStream newInputStream = socket.getInputStream();  FileOutputStream newOutputStream = new FileOutputStream(""C:\Users\abdul\Documents\Greedy2.pptx"");  newInputStream.read(newByte, 0, newByte.length);  newOutputStream.write(newByte, 0, newByte.length);  } else {  bufferedWriter.write(username   ": "   messageToSend);  bufferedWriter.newLine();  bufferedWriter.flush();  }  }   } catch (IOException e) {  closeEverything(socket, bufferedReader, bufferedWriter);  }  }  public void listenForMessage () {  new Thread (new Runnable(){  @Override  public void run () {  String msgFromGroupChat;  while(socket.isConnected()) {  try {  msgFromGroupChat = bufferedReader.readLine();  System.out.println(msgFromGroupChat);  } catch (IOException e){  e.printStackTrace();  }  }  }  }).start();  }  public void closeEverything (Socket socket, BufferedReader bufferedReader, BufferedWriter bufferedWriter){  try {  if (socket != null){  socket.close();  }  if (bufferedReader != null){  bufferedReader.close();  }  if (bufferedWriter != null){  bufferedWriter.close();  }  } catch (IOException e) {  e.printStackTrace();  }  }  public static void main (String [] args) throws IOException {  Scanner scanner = new Scanner(System.in);  System.out.println("Enter your username for the group chat: ");  String username = scanner.nextLine();  Socket socket = new Socket ("localhost", 1234);  Client client = new Client(socket, username);  client.listenForMessage();  client.sendMessage();  } }  

Я добавил FileInputStream , FileOutputStream сам в startServer и sendMessage . Этого не было в оригинальном учебнике. Это мой первый раз