java局域網(wǎng)傳輸
java局域網(wǎng)傳輸
java上傳文件到局域網(wǎng)內(nèi)的另一臺計算機上?下面是學(xué)習(xí)啦小編跟大家分享的是java 局域網(wǎng) 傳輸,歡迎大家來閱讀學(xué)習(xí)。
java 局域網(wǎng) 傳輸
分析
今天又遇到一個問題:怎樣將文件上傳到局域網(wǎng)內(nèi)的另一臺機器上。解決方案粗略的想了下大概有如下幾種:
1. 搭建一臺FTP服務(wù)器,然后通過FTP協(xié)議進(jìn)行文件傳輸。這個方式固然有效,但是有點麻煩。
2. 通過Socket來傳輸文件,這種方法需要編寫一個客戶端和一個服務(wù)端,這種方案比較通用,在其他方案不可行的情況下,這種方案還是不錯的。
3. 搭建一臺HTTP服務(wù)器(例如tomcat),上傳文件時直接將文件上傳到這臺機器上,需要部署用來上傳文件的應(yīng)用。
4. 如果是windows系統(tǒng)可以采取最簡單的形式來完成文件傳輸(文件共享)。
采用windows文件夾共享來實現(xiàn)
本文最要用第4個方式來完成此功能:
首先在你想要保存上傳文件的計算機上設(shè)置文件共享,例如本文共享的是image文件夾:
右鍵image文件夾 -> 屬性 -> 共享 -> 文件和文件夾共享
注意:一定要添加Evenyone用戶,并且要給讀寫的權(quán)限。
共享完成后,開始 -> 運行,輸入2.168.0.67\image (根據(jù)實際情況輸入你自己的ip)打開共享文件目錄。
以下是Java代碼:
public class Test {
public static void main(String[] args) throws Exception {
String srcPath = "c:\pic.jpg";
File parentDir = new File("2.168.0.67\image");
File targetPath = new File(parentDir,
UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
InputStream in = new FileInputStream(srcPath);
OutputStream out = new FileOutputStream(targetPath);
try {
byte[] bs = new byte[1024];
int len = -1;
while((len = in.read(bs)) != -1) {
out.write(bs, 0, len);
}
} finally {
try {
out.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("上傳成功!!");
}
}12345678910111213141516171819202122232425262728291234567891011121314151617181920212223242526272829
本例只是將本地的一個圖片文件上傳到局域網(wǎng)內(nèi)的計算機,F(xiàn)ile parentDir = new File("2.168.0.67\image") 注意后面的 文件路徑,\后面緊跟著局域網(wǎng)IP地址,后面是共享文件的目錄,接下來與操作普通文件一樣進(jìn)行操作, 通過流寫到目標(biāo)位置。文件名是通過UUID來生成,除掉其中的-,關(guān)于文件目錄打散:可以通過一些算法來生成文件目錄,例如:通過yyyy/MM/dd的日期格式來創(chuàng)建文件夾,也可以通過文件名的哈希碼進(jìn)行一些處理來生成目錄。
通過下圖看到,圖片確實已經(jīng)上傳上傳上去了: