嗨我有一个带菜单的JFrame和菜单中的项目。单击该项时是否可以调用另一个我的download.java文件?如果是这样的话?感谢
download.java
public class download {
public static void main(String[] args) throws IOException {
String fileName = "C:/Users\\Kris\\Downloads\\Death Grips - Get Got.mp3";
URL link = new URL("http://www.last.fm/music/Death+Grips/_/Get+Got");
InputStream in = new BufferedInputStream(link.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
while (-1!=(n=in.read(buf)))
{
out.write(buf, 0, n);
}
out.close();
in.close();
byte[] response = out.toByteArray();
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(response);
fos.close();
System.out.println("Finished. Your File is Located at"+ fileName );
}
}
从我的菜单类中我需要添加一个actionListener。但是如何在动作监听器中调用我的download.java文件呢?或者我如何在动作监听器中添加我的download.java代码?
download.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//code to download the file??
}});
在匆匆忙忙地打击我的问题后,最终找到了自己的答案。
public void actionPerformed(ActionEvent e) {
try {
download.main(args);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
这是通过添加filename.main(args);从其他文件运行java文件的方法;
答案 0 :(得分:1)
您编写的PHP太多了。 Java并不是那样的。如果您想要做的是在另一个类中调用功能,您可以直接调用它(如果它是静态的)或创建一个新对象,并在其上调用该方法。
要回答您的(已编辑)问题,您当前的代码存在一些问题。我的版本在这里:
public class Download {
public boolean getFile(String filename, URL link) {
try (InputStream src = new BufferedInputStream(link.openStream())) {
try (FileOutputStream dest = new FileOutputStream(filename)) {
byte[] buf = new byte[1024];
while (true) {
int size = src.read(buf);
if (size == -1) {
break;
}
dest.write(buf, 0, size);
}
}
} catch (IOException e) {
return false;
}
return true;
}
public static void main(String[] args) throws MalformedURLException {
String fileName = "./Death Grips - Get Got.mp3";
URL link = new URL("http://www.last.fm/music/Death+Grips/_/Get+Got");
Download d = new Download();
if (d.getFile(fileName, link))
{
System.out.println("Yay!");
} else
{
System.out.println("Boo!");
}
}
}
确定。所以解释一下。主要方法基本上允许您测试每件事情是否有效,您应该从代码中删除它。但是,这是ActionListener中需要的代码类型的示例。请记住,您要打开的URL是HTML页面,而不是mp3文件。话虽如此,其余的代码是非常不言自明的,并没有与您的功能有显着的不同。更可重复使用。 :)