<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 閱讀(2730) 評論(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!
      回復  更多評論
      

    主站蜘蛛池模板: 精品国产免费观看一区| 亚洲国产人成在线观看| 午夜色a大片在线观看免费| 暖暖在线视频免费视频| 成人午夜免费视频| 亚洲1区2区3区精华液| 亚洲成人网在线观看| 婷婷久久久亚洲欧洲日产国码AV| 亚洲Av无码乱码在线观看性色| 免费看AV毛片一区二区三区| 日本妇人成熟免费中文字幕| 24小时日本韩国高清免费| 久久国产精品成人免费| 中文在线免费不卡视频| 无码的免费不卡毛片视频| 黄色三级三级免费看| 日韩欧美亚洲中文乱码| 亚洲综合一区国产精品| 亚洲娇小性xxxx| 亚洲一级毛片中文字幕| 亚洲视频免费一区| 中文字幕亚洲免费无线观看日本| 久久夜色精品国产亚洲| 国产亚洲成av人片在线观看| 亚洲一区无码精品色| 中文字幕不卡亚洲| 亚洲无码黄色网址| 中文字幕亚洲一区二区三区| 亚洲免费在线观看| 亚洲一区二区三区免费| 亚洲伊人久久精品影院| 亚洲综合无码AV一区二区| 亚洲精品久久久www | 亚洲日韩乱码中文无码蜜桃臀| 亚洲人成在线播放网站岛国| 亚洲成年人在线观看| 青青草原精品国产亚洲av| 亚洲综合区图片小说区| 亚洲videosbestsex日本| 亚洲一区二区三区久久| 亚洲字幕AV一区二区三区四区|