java - 我的工作目录、文件和 url

标签 java toolkit working-directory

我的需求集中在我的数据文件所在的位置。当前应用程序的所有类和数据文件都在一个 JAR 中(使用 Eclipse IDE 构建)。

我注意到人们似乎可以通过多种方式获取这些信息。我需要我的图像文件所在的路径(图形)。我还需要它作为 URL 或使用工具包调用。

Toolkit tk = frame.getToolkit();
image = tk.getImage(url.toFile());

但是我在创建 URL 或其他方面遇到了问题。我尝试了几种不同的方法。此时,我将数据文件放在文件系统中的类文件旁边。我正在为我所做的添加另一个功能 - 在调试中运行时删除/bin 目录。

// in class BwServices at init:
try {
    rootDataPath = BwServices.class.getProtectionDomain()
        .getCodeSource().getLocation().getPath();
    rootDataPath = URLDecoder.decode(rootDataPath, "UTF-8");
        fileSystemAccess = true;
} 
if(rootDataPath.endsWith("/bin/"))  
    rootDataPath = rootDataPath.substring(0, rootDataPath.length() - 4);

后来……我去拿图,有的电话打不通,不知道为什么

我试过两件事....

// 1
String s = "file://" + rootDataPath + d.toString() + fileName;   
url = frame.getClass().getResource(s);

// 2
    try {
        url = new URL(s);
    } catch (MalformedURLException e) {
        trace("getImage - can't get url: " + s);
        e.printStackTrace();
    } 

两者都有问题。
我接到电话要从不同地方获取图像。 “框架”是整个执行过程中的父框架,在类 BwFrame 中。

我的道路在任何尝试中都是这样......

根数据路径:/C:/Users/Markgm/Documents/DEV/workspace/bwp/

因此,我正在寻找方法来打开工具包的 FileInputStream 或 URL,以获取与类文件所在位置相关的文件(以及在调试时使用一些技巧)。对于客户端应用程序,这就是它。有一天,我可能想将它作为一个 Applet 运行,但我不知道图像文件必须在哪里。 (50x75 扑克牌和一些按钮图像)任何帮助或建议都将不胜感激!

TIA, 标记

最佳答案

Toolkit tk = frame.getToolkit();

不要使用 Toolkit 加载图像,自 Java 1.4 以来。请改用 ImageIO.read(String/File/URL),这是一种阻塞方法,可确保在返回之前加载整个图像。

image = tk.getImage(url.toString());

还有一个实际问题。一旦有了 URL(或 File)对象,就不要将其丢弃并使用 String 表示。更重要的是,不要提供本应代表 File,但实际上代表 URLString!

我没有阅读其余的代码片段(在问题或后续“答案”中),您可能希望发布 SSCCE future 。

关于java - 我的工作目录、文件和 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129182/

相关文章:

jquery - jQuery 的 GUI 生成器

java - 在单独的目录中执行Java中的.exe文件

java - 如何让Spring Cloud Consul注册外网IP?

java - ScheduledThreadPoolExecutor 线程中的 GWT 环境错误

user-interface - 这是什么操作系统和 UI 工具包?

自定义 makefile 中的源位置和目标位置

java - org.springframework.beans.factory.BeanCreationException 与事务管理器

java - 带有 netty 服务器 (SSLSocket) 的 Android 客户端

python - 获取python.exe路径