Hallo zusammen,
ich habe folgendes Problem. Ich habe ein Programm zum übertragen von Dateien geschrieben.
Der Client sendet die Datei über folgende Methode:
Der Server empfängt die Datei über folgende Methode
Mit Textdateien klappt das Senden einwandfrei. Ich möchte das senden aber Folgendermaßen gestalten. Das senden Soll unabhängig von Dateityp funtionieren. Leider muss man vor dem FileOutputStream bereits eine File(String Dateiname) angelegt haben. Um die File anzulegen müsste ich also vorher schon die Dateiendung wissen.
Gibt es keine möglichkeit vor der Datei ein paar Informationen über die Datei zu senden (Dateiname, Dateigröße)?
Vielen Dank im Voraus
Benni
ich habe folgendes Problem. Ich habe ein Programm zum übertragen von Dateien geschrieben.
Der Client sendet die Datei über folgende Methode:
Code:
public boolean sendeDatei (File file) throws FileNotFoundException{
boolean erfolgreich = false;
Socket soc = null;
System.out.println("Dateiinformationen gesendet");
try {
soc = new Socket(getHostName(),getPortNr());
DataOutputStream datOutputStream = new DataOutputStream(soc.getOutputStream());
FileInputStream fileInputStream = new FileInputStream(file);
int i;
while((i = fileInputStream.read()) != -1){
datOutputStream.write(i);
}
datOutputStream.flush();
datOutputStream.close();
fileInputStream.close();
soc.close();
System.out.println("absenden erfolgreich, Server closed");
} catch (Exception e) {
System.out.println("Fehler beim absenden");
try {
soc.close();
} catch (IOException e1) {
// TODO Automatisch erstellter Catch-Block
e1.printStackTrace();
}
e.printStackTrace();
}
return erfolgreich;
}
Der Server empfängt die Datei über folgende Methode
Code:
public File empfangeDatei(){
DateiInformationen dateiInformationen;
File file = null;
DataInputStream datInputStream = null;
Socket soc = null;
try {
soc = getServerSocket().accept();
datInputStream = new DataInputStream(soc.getInputStream());
file = new File("test.txt");
System.out.println("Eingehende Datei: " + file.getName());
FileOutputStream fileOutputStream = new FileOutputStream(file);
int i = 0;
while((i = datInputStream.read()) != -1){
fileOutputStream.write(i);
fileOutputStream.flush();
}
soc.close();
fileOutputStream.close();
datInputStream.close();
System.out.println("Speicherort: " + file.getAbsolutePath());
System.out.println("empfangen erfolgreich");
} catch (IOException e) {
try {
soc.close();
} catch (IOException e1) {
// TODO Automatisch erstellter Catch-Block
e1.printStackTrace();
}
e.printStackTrace();
}
return file;
}
Mit Textdateien klappt das Senden einwandfrei. Ich möchte das senden aber Folgendermaßen gestalten. Das senden Soll unabhängig von Dateityp funtionieren. Leider muss man vor dem FileOutputStream bereits eine File(String Dateiname) angelegt haben. Um die File anzulegen müsste ich also vorher schon die Dateiendung wissen.
Gibt es keine möglichkeit vor der Datei ein paar Informationen über die Datei zu senden (Dateiname, Dateigröße)?
Vielen Dank im Voraus
Benni