我有一个可以在文件夹中找到最近创建的文件的Java应用程序。我的最终目标是在网页上安装该应用,因此当用户打开网页时,该页面将导致文件夹中的最新文件打开。我已经阅读了oracle创建简单applet的一些教程,但是我遇到的所有内容都涉及制作我的页面不需要的GUI。
目前,当我在firefox中打开html页面时,它会加载除applet之外的所有html。它没有给出错误消息,它只是没有做任何事情。我认为这是因为它没有将我的java应用程序识别为applet,所以我想我可能需要做更多工作才能将我的代码转换为applet。我将“extends Applet”添加到我的java类名中,我考虑添加一个init方法,但这似乎更适合那些想要GUI的人。
java应用程序在下面,以防可能有所帮助。就HTML而言,我将applet嵌入applet code =“FirstApplet”width ='300'height ='300'(带有正确的开始和结束标签),它与java app位于同一个文件夹中。
import java.applet.Applet;
import java.io.File;
import java.io.IOException;
@SuppressWarnings("serial")
public class FirstApplet extends Applet{
public static File[] getPath(String folderPath){
File directory = new File(folderPath);
File[] myarray;
myarray=directory.listFiles();
return myarray;
}
public static String getMostCurr(File[] fileArray){
File mostCurrent = null;
for (int i = 0; i < fileArray.length; i++) {
if ((mostCurrent==null)||
(fileArray[i].lastModified()> mostCurrent.lastModified()))
{
mostCurrent = fileArray[i];
} }
//System.out.println(mostCurrent.toString());
return mostCurrent.toString();
}
public static void main(String[] args) throws IOException{
//opens file on MACINTOSH
Runtime.getRuntime().exec(new String[]{"/usr/bin/open",
getMostCurr(getPath("/Users/guest/Desktop/lectures/testFileReader"))});
}
}
编辑**:这是请求的HTML页面。
<html>
<head>
<title>My First Java Applet </title>
</head>
<body>
Here's my first java applet: <br> <br>
<applet code ='FirstApplet.class' width='300' height='300'>
</body>
</html>
答案 0 :(得分:2)
您的applet是否仅在本地查看页面时运行 - 即为方便起见它是HTML?
因为否则,您在此处遇到了高级设计问题。当applet在浏览器中运行时,它正在运行客户端。因此它无法列出服务器上的文件。 Applet沙箱也会阻止您列出客户端文件。您当然无法在小程序中执行Runtime.exec(...)
。
您需要研究服务器端技术。或者如果你坚持使用Applet,你需要以某种方式获取服务器端的所有文件,查看标题以找出每个资源的创建/最后修改时间,然后选择合适的...
答案 1 :(得分:0)
只是为了方便而使用HTML。
开发,调试和部署applet(甚至是一台PC)并不方便或容易。从我这一点来看,我对applet有丰富的经验。
它只能在我的经理的计算机上运行,该计算机上有所有必要的文件。
对于一台机器,我会使用标准应用程序。使用main()
,可能是从shell脚本启动的(例如OS X的.sh)。而不是经理“点击链接”浏览到自动打开文件的页面,而是“运行(双击?)脚本”,它执行相同的操作。在Windows中,您甚至可能直接从HTML链接到.bat
文件,但我怀疑Apple会想要打开这个安全漏洞。
另请使用Desktop.open(File)
或Desktop.edit(File)
代替Runtime
。