アプレットでファイルを読む

  1. 目的


    アプレットでファイルは直接アクセスできませんが、URLで指定したファイルを読むことはできます。

  2. URLファイル


    1. 利用法

       まず、URLで指定したファイルをURLのインスタンスにします。

       URL url=new URL(getCodeBase(),strURL);

      getCodeBase()は、アプレットが存在するURLを取得します。strURLは アプレットからの相対パスでのファイル名です。これから、 openStream() でファイルとして開くことができます。URLは、MalformedURLExceptionエラーを catch する必要があります。

       InputStream in=url.openStream();

      後は、通常のファイルの扱いです。

       in = new BufferedInputStream(in);
       Reader rd=new InputStreamReader(in);

      で Reader のインスタンスを取得し、
       rd.read()
      で1文字読み出します。

  3. プログラム


    1. プログラム


      fileはアプレットで表示用のTextAreaを作成します。実際の読みとりは loadURL(String strURL) で行っています。
      import java.net.*;
      import java.io.*;
      import java.applet.*;
      import java.awt.*;
      
      public class file extends Applet{
      
          public void init() {
            this.setLayout(null);
            TextArea textArea1 = new TextArea();
            textArea1.setBounds(new Rectangle(10, 10, 350, 150));
            this.add(textArea1, null);
              
              
             String strURL="init.txt";
             String text=loadURL(strURL);
             textArea1.setText(text);
             System.out.println(text);
          }
          
           protected  String loadURL(String strURL) {
           
              String strData = ""; 
              int ch;
              try{
                  URL url=new URL(getCodeBase(),strURL);
                  System.out.println("URL:"+getCodeBase());
                  InputStream in=url.openStream();              
                  in = new BufferedInputStream(in);
                  Reader rd=new InputStreamReader(in);
                        
                while ((ch = rd.read()) != -1) {       
                  //System.out.println((char)ch);            
                  strData += (char)ch;          
                 } 
              }catch (MalformedURLException e) {      
                 System.out.println("error :inURL");    
                 return null; 
              }
              catch (IOException e) {      
                  System.out.println("error :read file");      
                  return null;   
               }
                              
             return strData;  
           }  
          
      }

    2. 実行

       上のソースをコンパイルします。コンパイルで生成された *.class ファイル(Applet1.class、Applet1$1.class、Applet$2.class)を 同じサーバーのフォルダに file.txt ファイルをおきます。open ボタンを押すと、ファイルを読み表示します。