我的工作轉移了服務器和客戶端之間文件的Java項目,我已經成功地將文件發送到所需的輸出位置,但唯一的問題是我必須包括完整輸出路徑中的文件名稱以成功保存。我的程序以這種方式運行:java的套接字文件傳輸輸出路徑
首先,它獲取文件的路徑被轉移輸入到控制檯,然後再將它得到的輸出路徑,作爲輸入到控制檯。
這裏有相應的文件名,進口和出口(我認爲這個問題是在這裏的地方,並張貼這部分將被就夠了)
服務器端
....
String in_filePath = null;
System.out.print("enter the file name: ");
in_filePath = sc.nextLine();
File myFile = new File(in_filePath);
System.out.println("The file chosen is being sent...");
byte[] mybytearray = new byte[(int) myFile.length()];
FileInputStream fis = null;
try {
fis = new FileInputStream(myFile);
sc.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
客戶端的代碼
.....
int bufferSize = clientSocket.getReceiveBufferSize();
is = clientSocket.getInputStream();
DataInputStream clientdata = new DataInputStream(is);
String fileName = clientdata.readUTF();
System.out.println("file to be transferred is: " + fileName);
System.out.print("file output path: ");
String out_filePath;
out_filePath = sc.nextLine();
File file = new File(out_filePath);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bytesRead = is.read(aByte, 0, aByte.length);
do {
baos.write(aByte);
bytesRead = is.read(aByte);
} while (bytesRead != -1);
bos.write(baos.toByteArray());
System.out.println(fileName + " transferred successfully");
起初我沒有包括輸出路徑i我的節目;如預期的那樣,輸出路徑是根項目文件夾,並且它在讀取文件名併發送具有相同名稱的文件沒有問題時工作得很好。但是當我實現輸出路徑查詢時,我選擇的輸出路徑如「C:\」或「C:\ blabla \」給我例外,如上所述。此外,將輸出路徑設置爲「C:\ image.jpg」或「blablabla \ image.jpg」可以很好地工作(假設要將文件的名稱複製爲image.jpg),讀取文件名時會出現問題?任何幫助,將不勝感激
編輯:現在我收到一個套接字寫錯誤,如果我已經給出了「c:\」(或任何類型的路徑)作爲輸出路徑,但它仍然工作良好,如果輸出給定路徑,如「C:\ image.jpg的」
不例外發生在哪一行?並在服務器或客戶端?標題說輸出路徑,但總結表明它可能在客戶端? – Robadob
我加入蹤跡看到它,但現在得到一個不同的錯誤,在服務器端套接字寫入錯誤,如果我給輸出路徑爲c:\,並再次它工作得很好,如果我給完整的文件名 – emenike