---- 不!有辦法。決竅就是我們不要將這些服務器上的文件作為普通文件來處理,而是將它們作為網絡資源來獲取它們的內容。在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!");
}
}