JSP中的檔案操作(檔案流)

來源:互聯網
上載者:User

File類的對象主要用來擷取檔案本身的一些資訊.例如檔案所在的目錄,檔案的長度和檔案讀寫權限等,不涉及對檔案的讀寫操作.
構造方法:File(String filename);
File(String directoryPath,String filename);
File(File f,String filename);

指定類型的檔案:
public String[] list(FilenameFilter obj):以字串形式返回目錄下目錄下指定類型的所有檔案.
public File[] listFiles(FilenameFilter obj):用File對象返回目錄下指定類型的所有檔案.
FilenameFilter是一個介面,該介面有一個方法:
public boolean accept(File dir,String name);
樣本為jsp頁面上的代碼:
<%!
         class FileJSP implements FilenameFilter
         {
         String str = null;
         FileJSP(String s)
         {
         str = "."+s;
         }

         public boolean accept(File dir,String name)
         {
         return name.endsWith(str);
         }
         }
          %>
          <br>目錄中的jsp檔案:
          <%
           FileJSP file_jsp = new FileJSP("jsp");
           String file_name[] = dir1.list(file_jsp);
           for(int i = 0;i<file_name.length;i++)
           {
           out.print("<br>"+file_name[i]);
           }
           %>

使用位元組流讀寫檔案:
所有位元組輸入資料流類都是InputStream抽象類別的子類,而所有的位元組輸出資料流類都是OutputStream抽象類別的子類.
FileInputStream ,FileOutputStream類分別從InputStream,OutputStream類繼承而來.

為了提高讀寫效率,FileInputStream 經常和BufferedInputStream 流配合使用.
FileOuputStream流經常和BufferedOutputStream流配合使用.
對應的構造方法分別為:BufferedInputStream(InputStream in);
    BufferedOutputStream(OutputStream out);
範例程式碼為:(JSP頁面內編寫)
<%
           File f6 = new File("F:/SF/Test1.java");
           try
           {
           /* FileOutputStream outfile = new FileOutputStream(f6);
           BufferedOutputStream bufferout = new BufferedOutputStream(outfile);
           byte[] b = "你們好,很高興認識你們呀!<br>nice to meet you ".getBytes();
           bufferout.write(b);
           bufferout.flush();
           bufferout.close();
           outfile.close(); */
           FileInputStream in = new FileInputStream(f6);
           BufferedInputStream bufferin = new BufferedInputStream(in);
           byte c[] = new byte[90];
           int n = 0;
           while((n=bufferin.read(c))!=-1)
           {
           String temp = new String(c,0,n);
           out.print(temp);
           }
           bufferin.close();
           in.close();
          
           }
           catch(IOException e){}
            %>

使用字元流讀寫檔案:
  使用位元組流讀寫文時,因為位元組流不能直接操作Unicode字元,所以java提供了字元流.由於漢字在檔案中佔用2個位元組,如果使用位元組流,讀取不當會出現亂碼現象,採用字元流就可以避免這個現象.在Unicode字元中,一個漢字被看作一個字元.
所有字元輸入資料流類都是Reader抽象類別的子類,而所有字元輸出資料流類都是Writer抽象類別的子類.
FileReader類與FileWriter類,BufferedReader 類與BufferedWriter類
程式碼範例:
  <%!
     public void writeContent(String str,File f)
     {
     try{
     FileWriter outfile = new FileWriter(f);
     BufferedWriter bufferout = new BufferedWriter(outfile);
     bufferout.write(str);
     bufferout.close();
     outfile.close();
     }catch(IOException e){}
     }
    
     public String readContent(File f)
     {
     StringBuffer str = new StringBuffer();
     try{
     FileReader in = new FileReader(f);
     BufferedReader bufferin = new BufferedReader(in);
     String temp;
     while((temp=bufferin.readLine())!=null)
     {
     str.append(temp+"<br>");
     }
     bufferin.close();
     in.close();
     }catch(IOException e ){}
     return new String(str);
     }
     %>

資料流:
DataInputStream類與DataOutputStream類建立的對象分別被資料輸入流和資料輸出資料流.它們允許程式按照與機器無關的風格讀取java未經處理資料.也就是說,當讀取一個數值時,不必再關心這個數值應當是多少個位元組.
構造方法為:DataInputStream(InputStream in);
   DataOutputStream(OutputStream out);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.