學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 局域網(wǎng)安全 > java局域網(wǎng)傳輸

java局域網(wǎng)傳輸

時間: 林澤1002 分享

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)上傳上傳上去了:

2687242