zoukankan      html  css  js  c++  java
  • Applet实现对本地文件进行读写

    http://hi.baidu.com/echo_swjtu/blog/item/e0bdaa2874798520359bf736.html

    这篇文章澄清了我一直以来思想中的一个错误,就是applet要想读取本地文件必须要修改Java_Home\lib\security\java.security文件,即使经过了数字签名的jar也一样。原来这是两种获得授权的方法而已。大善,基于Javafx的应用可以搞下去了。

    ————————————————————————————————————————————————————————————————

    Applet实现对本地文件进行读写的方法有两种。
    1.修改Java_Home\lib\security\java.security文件,并把自己写好的.policy文件放到指定的目录中。(我实验没成功)
       这个方法实现起来比较简单,而且只要在.policy文件中进行一定的设置,Applet程序几乎就可以访问本地磁盘里的所有文件了。但是这种方法的一 个最大缺点就是要改客户端Jre的java.security文件。在实际应用中,这样的做法不太现实。不可能每个用户为了用你这个Applet去修改自 己的安全配置文件,况且很多用户根本不知道Jre是什么。
    2.对Applet所在的Jar包进行数字签名。
    1、 keytool -genkey -keystore someone.store -alias someone  这个命令用来产生一个密匙库,执行完毕后会在当前目录下产生一个soneone.store的文件,这里的someone是我自己写的 名字,你可以对它进行修改。另外在执行命令的时候还有提示你输入密匙库的密码,这里你一定要记住,否则后面要用的时候无法输入。
    2、给你的Applet打包成jar文件,jar -cvf ****.jar XX .
    3、给jar包签名:
      jarsigner -keystore someone.store MyApplet.jar someone

    这个命令就是用我们刚刚生成的密钥给jar文件进行签名。

    3.补充   鉴于对applet进行数字签名比较麻烦,特别是对于不懂数字签名的人来说,经过网上查阅,还有一种简单的方法来实现对本地文件的读写。

    http://support.microsoft.com/kb/180707/zh-cn

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

    不 要将这些服务器上的文件作为普通文件来处理,而是将它们作为网络资源来获取它们的内容。在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!");
    }
    }

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


    ——————————————————————————————————
    傲轩游戏网
  • 相关阅读:
    编程之美1的个数统计
    组合以及可以重复的排列
    Swing之图书管理系统
    经常熬夜的人一定要看
    利用SharePoint Designer开发可循环工作流
    SharePoint Software DownLoad Address 微软软件 下载地址
    日期验证 正则表达式
    时间验证 正则表达式
    Reporting Services SharePoint AddIn Setup Problems
    char、varchar、text和nchar、nvarchar、ntext的区别
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2566311.html
Copyright © 2011-2022 走看看