Ciao a tutti!!!
Ho un problema paradossale, per fare un programma sto utilizzando parte di codice di un programma che ho fatto l'anno scorso (funzionante) ma il problema è che per "magia" non va più.
Devo inviare semplicemente un file da client a server e viceversa.
Per comodità (più corto e tutto in un file) vi incollo il codice di un programmino fatto dal mio prof, che ho utilizzato l'anno scorso (ho utilizzato le sue classi sendFile e getFile).

PARTE SERVER
codice:
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.io.ObjectOutputStream;

public class MediaServer
{
  private static ServerSocket serverSocket;
  private static final int PORT = 7777;

  public static void main(String[] args)
  	{
     
    System.out.println(">>> Pronto al servizio <<<\n");

    try
    {
      serverSocket = new ServerSocket(PORT);
    }
    catch(IOException ioEx)
    {
      System.out.println(">>> Impossibile agganciare la porta! <<<");
      System.exit(1);
    }

    do
    {
      try
      {
        Socket link = serverSocket.accept();
        System.out.println("Accepted connection : " + link);

        Scanner inStream = new Scanner(link.getInputStream());		// crea un oggetto scanner e lo associa allo stream di input del socket connesso al client


        ObjectOutputStream outStream = new ObjectOutputStream(link.getOutputStream());		// crea un oggetto ObjectOutputStream associato all'oggetto Socket


        String message = inStream.nextLine();			// acquisisce il messaggio


        if (message.equals("IMAGE"))						// chiama metodo sendFile a seconda del tipo di file passando nome file e oggetto ObjectOutputStream
          sendFile("./DATABASE/immagine.jpg", outStream);	
        if (message.equals("SOUND"))
          sendFile("./DATABASE/canzone.mp3", outStream);
      }

      catch(IOException ioEx)			// cattura eccezioni IO
      {
        ioEx.printStackTrace();
      }
    }while (true);
  }
  

  private static void sendFile(String fileName, ObjectOutputStream outStream) 
        throws IOException
  {

    FileInputStream fileIn = new FileInputStream(fileName);			// crea un oggetto FileInputStream passandogli il nome del file nel costruttore

    long fileLen =  (new File(fileName)).length();		// crea un oggetto File anonimo (non verra' piu' usato dal nome del file e usa metodo length per determinarne la lunghezza

    int intFileLen = (int)fileLen;		// converte log a int e dichiara un array di byte di questa lunghezza
    byte[] byteArray = new byte[intFileLen];

    fileIn.read(byteArray);		// usa metodo read di FileInputStream per leggere il contenuto del FileInputStream nello array di byte

    fileIn.close();			// chiude alla fine

    outStream.writeObject(byteArray);		// utilizza oggetto ObjectOutputStream per spedire array di byte al client
    outStream.flush();
  }
}
PARTE CLIENT
codice:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.ObjectOutputStream;


public class MediaClient
{
  private static InetAddress host;
  private static final int PORT = 7777;

  public static void main(String[] args)
  {
    try
    {
      host = InetAddress.getLocalHost();
    }
    catch(UnknownHostException uhEx)
    {
      System.out.println(">>> Non trovato host ID! <<<");
      System.exit(1);
    }

    try
    {
      Socket link = new Socket(host,PORT);

// crea oggetti ObjectInputStream e PrintWriter associandoli al socket
      ObjectInputStream inStream = new ObjectInputStream(
                      link.getInputStream());

      PrintWriter outStream = new PrintWriter(
            link.getOutputStream(),true);

// definisce stream per ingresso da tastiera
      Scanner userEntry = new Scanner(System.in);

      System.out.print(">>> Richiesta (IMAGE/SOUND): ");
      String message =  userEntry.nextLine();
      while(!message.equals("IMAGE") && !message.equals("SOUND"))
      {
        System.out.println("\n>>> Riprovaci! <<<\n");
        System.out.print(">>> Richiesta (IMAGE/SOUND): ");
        message =  userEntry.nextLine();
      }

// utilizza oggetto PrintWriter per mandare la richiesta al server
      outStream.println(message);

// riceve il file
      getFile(inStream, message);

      link.close();
    }
    catch(IOException ioEx)
    {
      ioEx.printStackTrace();
    }
    catch(ClassNotFoundException cnfEx)
    {
      cnfEx.printStackTrace();
    }
  }
 

  private static void getFile(ObjectInputStream inStream, String fileType)
            throws IOException, ClassNotFoundException
  {
// utilizza metodo readObject di ObjectInputStream per ricevere il file
// dal server facendo un cast di tipo da Object a byte[]
    byte[] byteArray = (byte[])inStream.readObject();
// crea oggetto FileOutputStream per ricevere dati
    FileOutputStream mediaStream;

// riceve dati a seconda del tipo di file passando il nome del file
    if (fileType.equals("IMAGE"))
      mediaStream = new FileOutputStream("./DOWNLOAD/image.jpg");
    else
      mediaStream = new FileOutputStream("./DOWNLOAD/canzone.mp3");

// utilizza metodo write di FileOutputStream per riempire il file
// con array di byte
    mediaStream.write(byteArray);
  }
}
L'anno scorso funzionava alla perfezione, quest'anno il server mi da quest'errore (esempio SOUND)
codice:
 
Accepted connection : Socket[addr=/192.168.0.3,port=2360,localport=7778]
java.io.FileNotFoundException: .\DATABASE\canzone.mp3 (Impossibile trovare il percorso specificato)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at MediaServer.sendFile(MediaServer.java:76)
	at MediaServer.main(MediaServer.java:57)
non riesco a capire il perchè, ho provato a cambiare i percorsi, a mettere "java.io.File.separator" sono disperato, aiutatemi !!!
Grazie ;-)