title: Copying a File from Client to Server
body: <p>I'm trying to copy a file from Client to Server, in Java, like so:</p>
  
  <p><em><strong>Client:</em></strong></p>
  
  <pre><code>public class Client {
  
      public static void main(String[] args) throws Exception {
          String fileName = "D:\\6282.mp3";
  
          try {
  
          } catch (Exception e) {
              Scanner scanner = new Scanner(System.in);
              String file_name = fileName;
  
              File file = new File(file_name);
              Socket socket = new Socket("localhost", 3332);
              ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
              ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
  
              oos.writeObject(file.getName());
  
              FileInputStream fis = new FileInputStream(file);
              byte[] buffer = new byte[Server.BUFFER_SIZE];
              Integer bytesRead = 0;
  
              while ((bytesRead = fis.read(buffer)) &gt; 0) {
                  oos.writeObject(bytesRead);
                  oos.writeObject(Arrays.copyOf(buffer, buffer.length));
              }
  
              oos.close();
              ois.close();
              System.exit(0);
          }
  
      }
  
  }
  </code></pre>
  
  <p><em><strong>Server:</em></strong></p>
  
  <pre><code>public class Server extends Thread {
  
      public static final int PORT = 3332;
      public static final int BUFFER_SIZE = 626;
  
      @Override
      public void run() {
          try {
              ServerSocket serverSocket = new ServerSocket(PORT);
  
              while (true) {
                  Socket s = serverSocket.accept();
                  saveFile(s);
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
  
      private void saveFile(Socket socket) throws Exception {
          ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
          ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
          FileOutputStream fos = null;
          byte[] buffer = new byte[BUFFER_SIZE];
  
          // 1. Read file name.  
          Object o = ois.readObject();
  
          if (o instanceof String) {
              fos = new FileOutputStream(o.toString());
          } else {
              throwException("Something is wrong");
          }
  
          // 2. Read file to the end.  
          Integer bytesRead = 0;
  
          do {
              o = ois.readObject();
  
              if (!(o instanceof Integer)) {
                  throwException("Something is wrong");
              }
  
              bytesRead = (Integer) o;
  
              o = ois.readObject();
  
              if (!(o instanceof byte[])) {
                  throwException("Something is wrong");
              }
  
              buffer = (byte[]) o;
  
              // 3. Write data to output file.  
              fos.write(buffer, 0, bytesRead);
  
          } while (bytesRead == BUFFER_SIZE);
  
          System.out.println("File transfer success");
  
          fos.close();
  
          ois.close();
          oos.close();
      }
  
      public static void throwException(String message) throws Exception {
          throw new Exception(message);
      }
  
      public static void main(String[] args) {
          new Server().start();
      }
  }
  </code></pre>
  
  <p>When I run I get:</p>
  
  <pre><code>run:
  BUILD SUCCESSFUL (total time: 0 seconds)
  </code></pre>
  
  <p>but nothing really happens. This is my first at Client-Server and I'm not sure what I'm getting wrong.</p>
  
  <p>Please help. Thank you.</p>