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

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

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

    kooyee ‘s blog

    開源軟件, 眾人努力的結晶, 全人類的共同財富
    posts - 103, comments - 55, trackbacks - 0, articles - 66
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    在Applet中讀取,寫入文件內容

    Posted on 2008-03-15 00:51 kooyee 閱讀(1039) 評論(1)  編輯  收藏 所屬分類: Swing/Applet
     

    ---- 我們知道,在Java Applet中出于安全性考慮,Applet是不允許對文件進行操作的,不僅不允許寫文件,而且不允許讀文件。盡管我們在編制Applet時即使使用了文件操作的語句Java不會報錯,在開發工具(如Cafe)中調試時也能夠正常運行,但當我們在瀏覽器中運行這個Applet時瀏覽器就會報錯。但有時我們的確要讀取文件中的內容,比如要將服務器中的.txt文件內容在Applet中顯示出來,是不是就沒有辦法了呢?


    ---- 不!有辦法。決竅就是我們不要將這些服務器上的文件作為普通文件來處理,而是將它們作為網絡資源來獲取它們的內容。在Java中可用于獲取網絡資源的類主要有兩種,一是URL類,另一個是URLConnection類。兩個類都提供了以字節流的方式讀取資源信息的方法,而且可以對資源信息的類型作出判斷,以便作相應的處理。不同之處是URLConnection類可提供的信息比URL類要多得多,它除了可以獲取資源數據外,還可以提供資源長度、資源發送時間、資源最新更新時間、資源編碼、資源的標題等許多信息。


    ---- 以下是兩個類的常用方法。


    URL類:

    · URL(String, String, int, String)

    構造方法,創建一個包含協議類型、主機名、

    端口號和路徑的URL對象

    · URL(String, String, String)

    構造方法,創建一個包含協議類型、主機名和路徑

    的URL對象,其中端口號為缺省值

    · URL(String)

    構造方法,創建一個URL對象,參數將協議

    、主機名、端口號和路徑組合起來

    · URL(URL,String)

    構造方法,根據給定URL對象與相對路徑創建一個新的URL對象

    · Object getContent( )

    檢索URL內容信息,并返回給對象

    · InputStream openStream( )

    從資源處返回一個輸入流

    · URLConnection openConnection( )

    生成一個URLConnection對象


    URLConnection類:

    · protected URLConnection(URL)

    構造方法,創建一個針對指定URL對象的URLConnection類

    · Object getContent( )

    返回URL對象所對應的內容

    · InputStream getInputStream( )

    獲取從對象中讀取的字節流

    · Protected static String guessContentTypeFromStream(InputStream is)

    根據輸入流猜測內容的類型


    ---- 下面以讀取服務器上的.txt文件內容為例說明如何在Applet中讀取文件。設服務器的IP地址為202.114.1.16,.txt文件的路徑為/file/sample.txt。以下是讀取sample.txt內容的Applet的源代碼。


    //getfile.html

     

    < HTML >
    < HEAD >
    < TITLE >讀取文件的Applet< /TITLE >
    < /HEAD >
    < BODY >

    這是服務器上TXT文件的內容
    < BR >

    < Applet code="getFile.class" width=200 height=100 >

    < /Applet >
    < /BODY >

    < /HTML >

     


    //getFile.java

    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.io.*;

    public class getFile extends Applet
    {
    String info;

    public void init()
    {
    URL url;
    URLConnection urlc;

    resize(
    200,100);
    setBackground(Color.white);

    try{

    url 
    = new URL("http://202.114.1.16/file/sample.txt");
    urlc 
    = url.openConnection();
    urlc.connect();

    info 
    = getInfo(urlc);
    }
    catch(MalformedURLException mfe){
    System.out.println(
    "URL form error!");
    }
    catch(IOException ioe){
    System.out.println(
    "IO Exception!");
    }

    }


    public void paint(Graphics g)
    {
    g.setColor(Color.red);
    g.drawString(info,
    50,50);
    }


    public String getInfo(URLConnection urlc)
    {
    String txt 
    = new String();
    InputStream is;
    int i;

    try{
    is 
    = urlc.getInputStream();
    = is.read();
    while(i != -1){
    txt 
    = txt + (char)i;
    = is.read();
    }


    is.close();

    }
    catch(IOException ioe){
    System.out.println(
    "IO Exception!");
    txt 
    = new String("File read failed!");
    }


    return txt;
    }

    }

     


    以上JAVA程序在兩種系統中調試均通過,兩種系統的配置分別為:

    (1) 服務器:Digital Unix + Oracle Webserver3.0

    瀏覽器:Netscape4.0.5或IE4.0

    (2) 服務器:Windows98 + Pws

    瀏覽器:Netscape4.0.5或IE4.0



    用bufferedreader的方法
    //create url to the file on server in applet class
                URL url = new URL(this.getCodeBase(),"filename");
                URLConnection urlc 
    = url.openConnection();
                
                BufferedReader in 
    = new BufferedReader(new InputStreamReader(urlc.getInputStream()));
                String line
    =null;
                
    if( (line = in.readLine()) != null ) 
                
    {            
                    System.out.printv(line);            
                }

                in.close();

    寫入
    //create url to the file on server
            URL url = new URL(config.getCodeBase(),"servlet/jsp name");
            URLConnection urlc 
    = url.openConnection();

                urlc.setDoOutput(true);

            PrintStream stream = new PrintStream( urlc.getOutputStream() );
            stream.println("param name="+
    "something write to file");

                BufferedReader in = new BufferedReader( new InputStreamReader( urlc.getInputStream()));注意這里要接收jsp/servlet的response, 否則它不運行

    在服務器端用servlet/jsp得到request,然后對其進行處理(save to a file or其他).注意這里要接收jsp/servlet的response, 否則它不運行
    // 根據時間得文件名
    Calendar calendar = Calendar.getInstance();
    String fileame 
    = String.valueOf(calendar.getTimeInMillis()) +".html";
    fileame 
    = request.getRealPath("/")+fileame;//生成的html文件保存路徑
    FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文件輸出流
    byte tag_bytes[] = templateContent.getBytes();
    fileoutputstream.write(tag_bytes);
    fileoutputstream.close();

    讀取server端properties文件
                URL url = new URL(this.getCodeBase(),"filename.properties");
                URLConnection urlc 
    = url.openConnection();
                
                    props.load(urlc.getInputStream());
                String prop1 
    = props.getProperty("prop1");            
                    String prop2 
    = props.getProperty("prop2");

    評論

    # re: 在Applet中讀取,寫入文件內容  回復  更多評論   

    2008-03-20 22:14 by AIJUN
    哇塞 這個你都懂啊,我研究了多年,被你一篇文章就點醒,你就是我的偶像了.好崇拜你哦~~~~
    主站蜘蛛池模板: 亚洲永久无码3D动漫一区| 青青久在线视频免费观看| 亚洲成a人一区二区三区| 亚洲精品国产精品| 日韩免费高清视频网站| 校园亚洲春色另类小说合集| 国产麻豆免费观看91| 亚洲人成77777在线观看网| 野花高清在线电影观看免费视频| 亚洲精品国产免费| 成人免费在线观看网站| 亚洲av成人一区二区三区观看在线| 卡1卡2卡3卡4卡5免费视频| 亚洲精品无码专区| 免费人成视频在线观看视频 | 久久久久久国产精品免费免费男同 | 羞羞的视频在线免费观看| 免费大黄网站在线看| 色吊丝性永久免费看码 | 好紧我太爽了视频免费国产| 久久精品国产亚洲AV网站| 亚洲一区在线免费观看| 亚洲 欧洲 自拍 另类 校园| 国产yw855.c免费视频| h视频在线免费观看| 亚洲免费视频网站| 欧美a级在线现免费观看| 亚洲熟妇无码八V在线播放 | 亚洲AV综合色区无码一区爱AV| 免费h视频在线观看| 亚洲六月丁香婷婷综合| 啊灬啊灬别停啊灬用力啊免费看| 精品一区二区三区高清免费观看| 亚洲AV成人一区二区三区AV| 在线观看AV片永久免费| 国产97视频人人做人人爱免费| 亚洲第一成年人网站| 亚洲精品国产va在线观看蜜芽| 久久久久久AV无码免费网站| 亚洲精品无码专区| 亚洲色图在线观看|