<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    這兩天做一個小東西,要求將一個文件打包到.war文件中,然后還要將這個文件從.war包中讀取出來,并在服務器硬盤上重新建一個新的文件。本來很簡單的東西,卻浪費了不少時間,寫出來,做一下筆記,同時給那些需要的朋友提供一下參考,下面是我寫的一個示例,在servlet中寫的:

    1 package com.hyq.servlets;
    2
    3 import javax.servlet.ServletException;
    4 import javax.servlet.http.HttpServletRequest;
    5 import javax.servlet.http.HttpServletResponse;
    6 import java.io.IOException;
    7 import javax.servlet.http.HttpServlet;
    8 import java.io.InputStream;
    9 import java.io. * ;
    10 import java.io.InputStreamReader;
    11 public class SystemInitServlet extends HttpServlet {
    12 private static final String CONTENT_TYPE = " text/html; charset=GBK " ;
    13 // Initialize global variables
    14 public void init() throws ServletException {
    15 java.io.InputStream stream = null ;
    16 File newFile = new java.io.File( " C:/hyq " );?? //新建一個文件目錄
    17 newFile.mkdirs();?????????????????????????????????????????? // 生成目錄
    18
    19 try {
    20 int bytesRead = 0 ;
    21
    22 javax.servlet.ServletContext context = getServletContext();
    23 stream = context.getResourceAsStream( " /hyq/hyq.cer " );
    24
    25 FileWriter tempFileWriter = new FileWriter( " C:/hyq/test.cer " );
    26
    27
    28 InputStreamReader inputd = new InputStreamReader(stream); // 這個地方一定要進行轉換
    29 Reader tempReader = inputd;
    30 char [] buffer = new char [ 8192 ];
    31
    32 try {
    33 while ((bytesRead = tempReader.read(buffer)) !=- 1 ) {
    34 tempFileWriter.write(buffer, 0 ,bytesRead); //?使用緩存讀入,不要使用 write(buffer),避免讀入空字符?
    35 }
    36 }

    37
    catch (IOException ex2) {
    38 }
    39 tempFileWriter.flush();????????????????????????????? //?記得清空緩存,否則讀入到緩存中不滿時,不會寫入文件
    40 tempFileWriter.close();??????????????????????????? //?要記得關閉
    41 inputd.close();??????????????????????????? //?要記得關閉
    42 tempReader.close();??????????????????????????? //?要記得關閉
    43
    }
    catch (Exception e) {
    44 System.err.println( " Load File failed " );
    45 }
    46 }
    47
    48 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    49 }?
    50 ?
    51 public void destroy() {
    52 }
    53
    54 }
    55
    56
    ???? 至于為什么一定要使用context.getResourceAsStream,而不使用其他的如context.getRealPath("/")等來獲

    取.war包中的文件,可以參考:http://www.tkk7.com/TrampEagle/archive/2006/04/20/42195.html一文,同時在測

    試過程中發現,在jsp頁面中不能直接使用這個方法,要使用application.getResourceAsStream(),但是仍然要使用InputStreamReader,進行轉換(這里要向thinkbase和lizongbo表示感謝)。如下:
    <%
    ChrBuffer=new char[10]; java.io.InputStream stream = application.getResourceAsStream("/hyq/hyq.cer"); InputStreamReader inputd = new InputStreamReader(stream);
    Reader tempReader = inputd;
    char[] buffer = new char[8192];
    int hyql = 0;
    while((hyql = tempReader.read(buffer))!=-1){
    out.write(buffer,0,hyql);
    }
    out.flush();???
    %>

    注意:一定要使用緩沖字符數組char[] ,我經過測試,如果不使用的話,只能得到一半的內容,使用緩沖

    后,才能得到全部的內容。

    如果哪位有更好的方法,還望不吝賜教!
    posted on 2006-05-08 11:41 TrampEagle 閱讀(2735) 評論(4)  編輯  收藏 所屬分類: 學習體會

    Feedback

    # re: 如何將.war包中的文件讀取到服務器硬盤 2006-05-08 13:50 thinkbase
    jsp頁面也可以的吧, context 這個東東在jsp頁面隱藏變量中好象叫 "application", 和 request/response 這些隱藏變量一樣是可以拿來就用的哦.  回復  更多評論
      

    # re: 如何將.war包中的文件讀取到服務器硬盤 2006-05-08 14:38 TrampEagle
    @thinkbase
    謝謝thinkbase,你是對的,確實在jsp中可以使用application.getResourceAsStream()來獲取文件內容的,我已經修改了原文。再次表示感謝!  回復  更多評論
      

    # re: 如何將.war包中的文件讀取到服務器硬盤 2006-05-08 14:38 lizongbo
    jsp里:

    this.getServletContext().getResourceAsStream("");

    或者:

    application.getResourceAsStream("")

      回復  更多評論
      

    # re: 如何將.war包中的文件讀取到服務器硬盤 2006-05-08 14:51 TrampEagle
    @lizongbo
    謝謝lizongbo的指點,但我測試后發現,application.getResourceAsStream("") 可以編譯通過,但是this.getServletContext().getResourceAsStream();這個方法應該應用在servlet中的,jsp中沒有this.getServletContext()這個方法,以前我就是使用這個方法出的問題,才造成誤解!但仍然非常地感謝lizongbo!
      回復  更多評論
      

    主站蜘蛛池模板: 亚洲一区二区观看播放| 免费福利在线视频| 成在线人永久免费视频播放| 亚洲日韩区在线电影| 好久久免费视频高清| 久久久久亚洲精品美女| 最近2019年免费中文字幕高清| 国产啪亚洲国产精品无码| aa级女人大片喷水视频免费| 免费一级特黄特色大片在线观看| 美女视频黄a视频全免费网站色 | 巨胸狂喷奶水视频www网站免费| 国产成人免费高清在线观看| 四虎影视在线看免费观看| 亚洲午夜久久久久久久久久 | 亚洲精品无码专区在线| 国产免费人视频在线观看免费| 四虎永久在线精品免费一区二区| 亚洲午夜福利在线观看| 曰韩无码AV片免费播放不卡 | 91亚洲国产成人久久精品 | 特级av毛片免费观看| 免费成人午夜视频| a毛片免费全部在线播放** | 国产成人亚洲综合网站不卡| 日本19禁啪啪无遮挡免费动图| 日韩在线观看视频免费| 亚洲国产一区国产亚洲| 插B内射18免费视频| 一区二区三区免费在线视频| 亚洲AV午夜福利精品一区二区 | 国产男女性潮高清免费网站| 久久久精品视频免费观看| 久久久久亚洲av无码专区喷水| 久久WWW免费人成人片| 一级一黄在线观看视频免费| 久久亚洲AV成人无码电影| 午夜高清免费在线观看| 中文字幕av无码不卡免费| 亚洲国产中文在线视频| www亚洲精品少妇裸乳一区二区|