转载:http://www.exam8.com/computer/Java/zonghe/200708/659876.html

---- 我们知道,在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

这是服务器上TXT文件的内容

//getFile.Javaimport 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();    
i =
is.read();    
while(i !=
-1){      
txt = txt +
(char)i;      
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

​

Applet web端对文件的读取方式的更多相关文章

  1. Java对文件的读取方式以及它们的优缺点

    Java常用的对文件的读取方式基本包括: BufferedReader -> readLine(): 按行读取文件,直到读取内容==null FileInputStream -> read ...

  2. web打开本地文件并读取内容

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. web端访问文件没有权限的问题

    背景 : ftp的PHP项目中的某些文件没有写入的权限..系统报注意错误!!! 原因 : 一般情况下,web端访问网站一般使用的是WWW权限(有限制的权限组)去访问, 但是我们编程开发的时候, 有可能 ...

  4. Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取

    一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...

  5. FileOutputStream字节输出流和FileInputStream输入流(切记:out是输出到本地中,in是输入到程序中)这里介绍大文件和小文件的读取方式

    //FileOutputStream public class FileOutputStreamDemo { /**字节流:适用于任何文件,以字节为单位,进行读写操作  *字节流操作步骤:  *1.创 ...

  6. 多个yml文件的读取方式

    1配置pom.xml文件,以下配置将默认激活-dev.yml配置文件<profiles>        <profile>            <id>dev&l ...

  7. web端图片文件直传

    采用JS客户端直接签名有一个很严重的安全隐患.就是OSS AccessId/AccessKey暴露在前端页面.可以随意拿到AccessId/AccessKey,这是非常不安全的做法. 本文将此例子进化 ...

  8. Python文件处理之文件读取方式(二)

    Python的open文件的读取方式有以下几种方法: read([size]):读取文件,如果传了size参数,则读取size字节,否则读取全部 readline([size]):读取一行 readl ...

  9. web端、android端的文件上传

    1.web端的文件上传. 这里是利用了第三方的jar包.这里所需要的jar包我已经上传到本博客的资源里了,以下是连接 http://download.csdn.net/detail/caihongsh ...

随机推荐

  1. C++各个存储区

    #include<iostream.h>void main(){char a[]="abc";栈 char b[]="abc";栈 char* c= ...

  2. 如何在不使用三大地图的KEY和相关组件的情况下,直接传参数到相关的H5地图

    以高德地图为例: window.location.href='http://m.amap.com/navigation/index/daddr=104.188206%2C30.858513%2C'+' ...

  3. XAMPP重置MySQL密码

    找到XAMPP的安装位置,这里以我的为例:C:\xampp 那么MySQL的路径:C:\xampp\mysql phpMyAdmin的路径:C:\xampp\phpMyAdmin 修改MySQL密码 ...

  4. 蚂蚁 RPC 框架 SOFA-RPC 初体验

    前言 最近蚂蚁金服开源了分布式框架 SOFA,楼主写了一个 demo,体验了一下 SOFA 的功能,SOFA 完全兼容 SpringBoot(当然 Dubbo 也是可以兼容的). 项目地址:Alipa ...

  5. DevOps之三 Git的安装与配置

    Centos7 安装Git 一.卸载Centos7 自带的git # git --version git version 1.8.3.1# whereis gitgit: /usr/bin/git / ...

  6. flush()清空文件缓存区

    # 缓冲区:cpu 一级缓存 二级缓存 三级缓存 import time f =open('2.txt','a+' ,encoding='utf-8') f.write('helloworld\n') ...

  7. cocos2d-x学习之路之工作吐槽

    经过大半年的cocos2d-x的学习,目前已在一个游戏创业公司实习,负责客户端的代码编写和维护.公司做了一款网游.比较给力,马上就要发布了.希望能够大卖.比较坑的是,居然电脑不给联网.查资料都不好查, ...

  8. centos下网络的配置

    1.网络模式要进行使用NAT,要连网的话,要配置好设置:网络要进行一下共享到虚拟机 进入vi /etc/sysconfig/network-scripts/ifcfg-eth0   把里面的onboo ...

  9. 条件随机场CRF(二) 前向后向算法评估标记序列概率

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在条件随机场CRF(一)中我们总结了CRF的模 ...

  10. table中的一些另类标签

    thead/tbody/tfoot/caption/colgroup 注意:thead/tbody/tfoot三部分内容不受编辑顺序影响只和标签本身含义从头到脚显示不能把两个tbody的内容进行合并单 ...