【问题标题】:Java Applet Download FileJava 小程序下载文件
【发布时间】:2011-11-23 17:25:01
【问题描述】:

我正在尝试构建一个将文件下载到客户端计算机的 Java 小程序。作为一个 java 应用程序,这段代码运行良好,但是当我尝试作为一个小程序时,它什么也没做。我已签署 .jar 文件,但没有收到任何安全错误消息

代码是:

import java.io.*;
import java.net.*;
import javax.swing.*;


public class printFile extends JApplet {

public void init(){ 

try{
    java.io.BufferedInputStream in = new java.io.BufferedInputStream(new
    java.net.URL("http://www.google.com").openStream());
    java.io.FileOutputStream fos = new java.io.FileOutputStream("google.html");
    java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
    byte data[] = new byte[1024];
    while(in.read(data,0,1024)>=0)
    {
        bout.write(data);
    }
    bout.close();
    in.close();


} catch(IOException ioe){     
}  
}
}

谁能帮忙?

【问题讨论】:

  • 1) printFile 请对类/方法/属性名称使用通用命名法。 2) java.io.BufferedInputStream 不需要try 中的任何完全限定名称。使用例如BufferedInputStream 代替。 3)不要吞下IOException,打电话给ioe.printStacktrace() 4)我理解谷歌不鼓励直接编程访问。尝试其他网站。 5) 请一致地缩进代码块。

标签: java applet download


【解决方案1】:
FileOutputStream fos = new FileOutputStream("google.html");

将其更改为:

File userHome = new File(System.getProperty("user.home"));
File pageOutput = new File(userHome, "google.html");
FileOutputStream fos = new FileOutputStream(pageOutput);  //see alternative below

理想情况下,您可以将输出放在以下任一位置:

  1. user.home子目录(可能基于主类的包名 - 以避免冲突)。 user.home 是用户应该能够读取和创建文件的地方。
  2. 最终用户在JFileChooser 的帮助下指定的路径。

【讨论】:

  • 您也可以将文件保存到java.io.tmpdir,这是用户的临时目录。
【解决方案2】:

看到这个问题,

Self Signed Applet Can it access Local File Systems

我相信它会对您有所帮助,您需要编写代码才能使用 PrivilegedAction。

http://docs.oracle.com/javase/1.4.2/docs/api/java/security/PrivilegedAction.html

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 2016-03-15
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多