<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
    哇塞 這個你都懂啊,我研究了多年,被你一篇文章就點醒,你就是我的偶像了.好崇拜你哦~~~~
    主站蜘蛛池模板: 99免费在线视频| 一个人看的免费视频www在线高清动漫| 久久久久久噜噜精品免费直播| 国产色婷婷精品免费视频| 久久精品国产亚洲AV蜜臀色欲| 久久国产精品免费专区| 亚洲啪啪AV无码片| 光棍天堂免费手机观看在线观看| 国产亚洲成人在线播放va| 国产精品视频全国免费观看| 亚洲精品无码99在线观看| 一级中文字幕乱码免费| 亚洲人成无码网站久久99热国产| a毛片成人免费全部播放| 久久99亚洲综合精品首页| 中文字幕在线免费看线人| 亚洲国产精品一区第二页| 99re6热视频精品免费观看| 亚洲高清免费在线观看| 99久久99久久精品免费看蜜桃| 亚洲精品人成网在线播放影院| 麻豆国产精品入口免费观看| 在线观看亚洲网站| 在线A亚洲老鸭窝天堂| 精品免费视在线观看| 亚洲人成网站在线观看播放动漫| 免费黄色网址入口| 有色视频在线观看免费高清在线直播 | 国产成人高清亚洲| 一个人看的www免费视频在线观看| 亚洲综合激情九月婷婷| 成年女人午夜毛片免费视频| 日亚毛片免费乱码不卡一区| 亚洲伊人久久精品影院| AV无码免费永久在线观看| 337P日本欧洲亚洲大胆艺术图 | 国产美女无遮挡免费网站| a高清免费毛片久久| 亚洲精品乱码久久久久久下载 | 亚洲欧洲∨国产一区二区三区| 精品国产sm捆绑最大网免费站|