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);