欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java如何實現(xiàn)文件上傳服務器和客戶端

這篇文章主要介紹Java如何實現(xiàn)文件上傳服務器和客戶端,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站設計、成都網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元洛扎做網(wǎng)站,已為上家服務,為洛扎各地企業(yè)和個人服務,聯(lián)系電話:028-86922220

具體內(nèi)容如下

文件上傳服務器端:

/** 
 * 使用TCP協(xié)議實現(xiàn)上傳功能的服務器端 
 * 思路: 
 * 新建ServerSocket 
 * 等待客戶端連接 
 * 連接上后開啟子線程,把連接獲取的Socket傳給子線程 
 * 循環(huán)進行 
 * @author yajun 
 * 
 */ 
public class UploadServer { 
  
 public static void main(String[] args) { 
  UploadServer server=new UploadServer(); 
  UploadThread command=new UploadThread(); 
  server.start(command); 
 } 
  
 /** 
  * 功能:接受連接,開啟子線程,循環(huán) 
  * @param command 用于下載的子線程對象,該對象實現(xiàn)了Runnable接口 
  */ 
 private void start(UploadThread command){ 
  //局部變量 
  ServerSocket serverSocket = null; 
  Socket transSocket; 
  //業(yè)務邏輯 
  try { 
   serverSocket=new ServerSocket(55555); 
   while(true){ 
    System.out.println("等待連接……"); 
    transSocket=serverSocket.accept(); 
    int i=0; 
    i++; 
    System.out.println("第"+i+"個連接"); 
    //用不用在下載完后關閉線程呢??? 
    command.setSocket(transSocket); 
    Executors.newFixedThreadPool(5).execute(command); 
   } 
  //異常捕獲 
  } catch (IOException e) { 
   e.printStackTrace(); 
  //關閉資源 
  } finally{ 
   try { 
    serverSocket.close(); 
   } catch (IOException e) { 
    e.printStackTrace(); 
   } 
  }//End of try 
 }//End of connect 
 @Test 
 public void testConnect() { 
  //測試任務:先運行服務器端,然后多次運行客戶端,服務器段可以不斷創(chuàng)建子線程,則測試成功 
  //測試準備:構(gòu)造一個線程,用于模擬下載線程 
  UploadThread command=new UploadThread(); 
  start(command); 
   
 } 
 
 @Test 
 public void testDown() throws IOException { 
  byte[] buf; 
  ByteArrayInputStream bis; 
  String str="canglaoshi.avi\ncontent,content,content"; 
  buf=str.getBytes(); 
  bis=new ByteArrayInputStream(buf); 
  UploadThread ut=new UploadThread(); 
  ut.down(bis); 
 } 
} 
//完成各個傳輸任務的子線程 
class UploadThread implements Runnable{ 
  
 Socket socket; 
 public UploadThread(){} 
 public UploadThread(Socket socket){ 
  this.socket=socket; 
 } 
 @Override 
 public void run() { 
  InputStream in; 
  try { 
    
   in = socket.getInputStream(); 
   down(in); 
    
  //異常處理 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } finally{ 
   try { 
    socket.close(); 
   } catch (IOException e) { 
    e.printStackTrace(); 
   } 
  } 
  //測試代碼 
  /*try { 
   Thread.sleep(5000); 
   System.out.println(Thread.currentThread().getName()+",復制完畢"); 
  } catch (InterruptedException e) { 
   e.printStackTrace(); 
  }*/ 
 }//End of run 
 public void setSocket(Socket socket){ 
  this.socket=socket; 
 } 
 //下載方法 
 /** 
  * 目標:把InputStream中的數(shù)據(jù)寫入到本地 
  * 思路: 
  * 1.獲取輸入流,最好傳入輸入流,而不是直接從Socket獲取,傳入有利用單元測試 
  * 2.從輸入流中讀到文件名 
  * 3.新建文件和文件輸出流 
  * 4.從輸入流中讀到文件內(nèi)容到文件輸出流 
  * 5. 
  * @throws IOException 
  */ 
 public void down(InputStream in) throws IOException{ 
  //局部變量 
  char ch; 
  char[] nameArr=new char[256]; 
  byte[] buf=new byte[1024]; 
  String name=""; 
  OutputStream out = null; 
  //業(yè)務邏輯 
  try { 
   //第一步:獲取文件名,構(gòu)造文件輸出流 
   int i=0; 
   while((ch=(char) in.read())!='\n'){ 
    nameArr[i++]= ch; 
   } 
   //name=nameArr.toString();//這句話無法將字符數(shù)組轉(zhuǎn)換為字符串,需用下面的語句 
   name=new String(nameArr); 
   System.out.println("要下載的文件為:"+name); 
   out=new FileOutputStream("src\\down\\"+name); 
   //第二步:將輸入流中的其他內(nèi)容寫入到文件 
   int len; 
   while((len=in.read(buf))!=-1){ 
    out.write(buf,0,len); 
   } 
   out.flush(); 
  //異常捕獲 
  } catch (IOException e) { 
   e.printStackTrace(); 
  //關閉資源 
  }finally{ 
   //疑問:兩個捕獲可不可以放到一塊呢,怎樣處理關閉流時的異常最好呢? 
   in.close(); 
   out.close(); 
  } 
  //調(diào)試 
  System.out.println(name); 
 } 
  
}//End of UploadThread

文件上傳客戶端:

/** 
 * 使用TCP協(xié)議實現(xiàn)上傳功能的客戶端 
 * @author yajun 
 */ 
public class UploadClient { 
  
 public static void main(String[] args) { 
  UploadClient client=new UploadClient(); 
  client.upload("src\\thursday\\AsListTest.java"); 
 } 
 
 /** 
  * 作用:上傳文件到服務器 
  * 1.建立到服務器的連接 
  * 2.獲取輸出流 
  * 3.將文件內(nèi)容寫入到輸出流 
  * 4.獲取服務器的響應 
  */ 
 private void upload(String name){ 
  Socket socket=null; 
  OutputStream out; 
  try { 
   socket=new Socket("127.0.0.1", 55555); 
   out=socket.getOutputStream(); 
   write2OutputStream(name, out); 
  //異常捕獲 
  } catch (UnknownHostException e) { 
   e.printStackTrace(); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } 
 } 
 @Test 
 public void testUpload() { 
  upload("src\\status.xml"); 
 } 
 /** 
  * 作用:傳入文件名和輸出流,將文件寫入到輸出流 
  * @param path 
  * @throws IOException 
  */ 
 private void write2OutputStream(String path,OutputStream out) throws IOException{ 
   
  FileInputStream fis = null; 
  byte[] buf=new byte[1024]; 
  String fileName=""; 
  //業(yè)務邏輯 
  try { 
    
   //1.寫入文件名 
   fileName=path.substring(path.lastIndexOf('\\')+1); 
   System.out.println("您要上傳的文件名為:"+fileName); 
   out.write(fileName.getBytes()); 
   out.write('\n'); 
   //2.寫入文件內(nèi)容 
   fis=new FileInputStream(path); 
   int len; 
   while((len=fis.read(buf))!=-1){ 
    out.write(buf, 0, len); 
   } 
   out.flush(); 
  //異常處理 
  } catch (IOException e) { 
   e.printStackTrace(); 
  //關閉資源 
  } finally{ 
   fis.close(); 
   out.close(); 
  } 
 }//End of upload 
 @Test 
 public void testWrite2OutputStream() throws IOException { 
  ByteArrayOutputStream out = null; 
  try { 
   out=new ByteArrayOutputStream(); 
   write2OutputStream("src\\status.xml", out); 
   System.out.println(out.toString("utf-8")); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } finally{ 
   out.close(); 
  } 
   
 } 
  
}

以上是“Java如何實現(xiàn)文件上傳服務器和客戶端”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前名稱:Java如何實現(xiàn)文件上傳服務器和客戶端
轉(zhuǎn)載來于:http://aaarwkj.com/article32/peghsc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、建站公司營銷型網(wǎng)站建設、網(wǎng)站營銷、面包屑導航、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設
99人妻精品一区二区| 宅男午夜一区二区三区| 国产在线精品成人欧美| 亚洲熟妇av一区二区| 亚洲精品国产精品乱码不卞| 国产综合一区二区三区视频| 久久精品久久精品欧美大片| 日本韩国三级视频在线观看| 日本一区二区国产在线| 国产强烈高潮粗暴对白| av在线免费观看大全| 少妇互射视频免费视频| 内射极品美女在线观看| 黄色三级亚洲男人的天堂| 中文字幕久久av一区二区| 亚洲另类熟女国产精品老| 二区三区成人在线观看| 国产91在线一区精品| 亚洲高清精品一区二区| 91精品夜夜夜一区二区| 国产一区二区三区在线看片| 国产美女直播亚洲一区色| 午夜在线精品福利视频| 国产熟女一区二区精品视频| 亚洲欧美综合伊人看片综合| 国产精品线路一线路三| 亚洲巨人精品福利导航| 国产情侣最新地址在线| 黄色av手机在线观看| 国产经典三级在线观看| 国产日韩一区二区三区电影| 黄色三级亚洲男人的天堂| 亚洲精品乱码国产妇女毛片| 久久国产精品一品二品| 人妻少妇被猛烈进入中文字幕91| 亚洲视频一区视频二区| 亚洲国产成人一区二区精品区| 日韩av在线免费在线观看| 国产成人综合精品久久| 国内不卡一区二区三区| 国产亚洲一区二区精品|