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

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

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

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      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一文,同時在測

    試過程中發(fā)現(xiàn),在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();???
    %>

    注意:一定要使用緩沖字符數(shù)組char[] ,我經(jīng)過測試,如果不使用的話,只能得到一半的內(nèi)容,使用緩沖

    后,才能得到全部的內(nèi)容。

    如果哪位有更好的方法,還望不吝賜教!
    posted on 2006-05-08 11:41 TrampEagle 閱讀(2729) 評論(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()來獲取文件內(nèi)容的,我已經(jīng)修改了原文。再次表示感謝!  回復  更多評論
      

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

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

    或者:

    application.getResourceAsStream("")

      回復  更多評論
      

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

    主站蜘蛛池模板: 国产精品黄页免费高清在线观看 | 久久99国产亚洲高清观看首页 | 亚洲自偷自偷在线成人网站传媒| 国产成人亚洲精品狼色在线 | 国产老女人精品免费视频| 59pao成国产成视频永久免费| 两性色午夜免费视频| 亚洲欧美精品午睡沙发| 亚洲av永久无码嘿嘿嘿| 亚洲成AV人片一区二区密柚| 国产精品va无码免费麻豆| 97人伦色伦成人免费视频| 国产高清不卡免费在线| 久久aⅴ免费观看| 免费黄网站在线看| 色www永久免费网站| 国产精品亚洲片在线花蝴蝶| 中文字幕在线日亚洲9| 亚洲免费网站在线观看| 亚洲国产视频网站| 亚洲精品不卡视频| 亚洲伊人久久大香线焦| 激情综合亚洲色婷婷五月 | 69影院毛片免费观看视频在线| 日本一区二区在线免费观看| 亚洲精品国产综合久久久久紧| 亚洲色大成网站WWW国产| 亚洲人成网站在线播放2019 | 怡红院免费全部视频在线视频 | 国产成人亚洲精品影院| 亚洲国产高清精品线久久| 国产人成免费视频| 免费va在线观看| 亚洲无线一二三四区手机| 麻豆91免费视频| 毛片免费观看网站| 国产又长又粗又爽免费视频 | 最新国产精品亚洲| 一级做性色a爰片久久毛片免费| 最新国产乱人伦偷精品免费网站| 亚洲精品免费网站|