我正在尝试完成一项家庭作业,要求我们使用存储在学校服务器上公共文件夹中的图片。我通过下载文件夹并将其复制到我的bin文件夹成功完成了在我的笔记本电脑(Mac)上工作的任务,但是这种方法不适用于提交,因为我们所做的就是上传.java文件进行评分。我的问题是使用文件路径将图像加载到网络上的某个位置。为了尝试测试这个方法,我创建了一个虚拟程序,在其中我尝试从桌面上的文件夹中显示文件。仍然没有骰子。我对javafx比较陌生,但从我读过的内容来看,我一直在尝试的代码应该正常工作,但事实并非如此。
最初我不需要使用Image对象来使用ImageView,但互联网似乎认为我需要。我不知道该怎么做。我的主要真正问题是,在字符串的“file:...”部分后,我必须包含多少级别的文件夹?我认为,因为我不知道我的教授使用什么计算机来运行我们的程序,所以我需要一直到存储图片文件夹的驱动器的名称(在这种情况下,U :) 。另外,如何从桌面上运行它?由于虚拟程序与图片文件夹位于同一个驱动器上,文件夹的“级别”会不同吗?
PS: 我的程序使用一个使用for循环生成的String数组文件名。最终的文件名是“incorrect_folder \ this_is_annoying \ Cards \”+ a +“。png”。 这个方法在文件夹放在我的垃圾箱之前没有任何问题,但我想我会提到它来覆盖我的所有基地。
我真的开始没时间在这个项目上了,这个小小的障碍真的令人沮丧。请帮忙。
答案 0 :(得分:0)
您无法将其作为相对路径访问,因为您不知道工作目录是什么。您需要将其作为绝对路径进行访问,就像他在您在评论中提供的电子邮件片段中所描述的那样。但是仍然存在一个问题,因为你不知道他会选择映射驱动器的驱动器号(用户基本上可以为映射的网络驱动器选择他们想要的任何驱动器号)。
我还建议先创建File
对象,然后再创建一个URL,而不是硬编码URL方案(file://
)。我还会检查文件夹是否存在,使用您的最佳猜测,然后让用户有机会选择一个文件夹,如果它没有(使用DirectoryChooser
)。所以在部分伪代码中:
File folder = new File("Y:/CSC Courses/CSC164/Lu/book/image/card");
if (! folder.exists()) {
// use DirectoryChooser to let user chooser directory with images...
}
File imageFile = new File(folder, "1.png");
try {
Image image = new Image(imageFile.toURI().toURL().toExternalForm());
// do whatever you need with image...
} catch (MalformedURLException exc) {
exc.printStackTrace();
}