7

我实际上有一个 Windows/Java 问题。我有一个插入式设备,我想通过 Java 访问它。通常,您可以通过驱动器号访问例如 USB-Stick...但是此平板电脑在 Windows 中显示为“便携式设备”...这意味着路径类似于“Computer\Archos 5S”并且有没有驱动器号。

我想通过 Java 访问此设备上的文件,但我无法找出正确的路径。那里有一个类似的问题,但没有有效的答案。或者还有其他方法可以通过 Java 访问此设备吗?


其实我还没有解决这个问题......我仍然无法通过java访问这样的设备。

目前我正在尝试使用 Java 访问 Windows ShellFolder。Shellfolder,例如:“Shell:::{35786D3C-B075-49b9-88DD-029876E11C01}”

Java可以做到这一点吗?最近我发现了 sun.awt 类“ShellFolder”......这是想要的功能吗?

谢谢你的帮助里佩

4

3 回答 3

4

在https://code.google.com/p/jmtp/上使用 JMTP 库解决上述问题

这是我的代码

package jmtp;

import be.derycke.pieter.com.COMException;
import be.derycke.pieter.com.Guid;
import java.io.*;
import java.math.BigInteger;
import jmtp.PortableDevice;
import jmtp.*;

public class Jmtp {

    public static void main(String[] args) {
        PortableDeviceManager manager = new PortableDeviceManager();
        PortableDevice device = manager.getDevices()[0];
        // Connect to my mp3-player
        device.open();

        System.out.println(device.getModel());

        System.out.println("---------------");

        // Iterate over deviceObjects
        for (PortableDeviceObject object : device.getRootObjects()) {
            // If the object is a storage object
            if (object instanceof PortableDeviceStorageObject) {
                PortableDeviceStorageObject storage = (PortableDeviceStorageObject) object;

                for (PortableDeviceObject o2 : storage.getChildObjects()) {
//                    
//                        BigInteger bigInteger1 = new BigInteger("123456789");
//                        File file = new File("c:/JavaAppletSigningGuide.pdf");
//                        try {
//                            storage.addAudioObject(file, "jj", "jj", bigInteger1);
//                        } catch (Exception e) {
//                            //System.out.println("Exception e = " + e);
//                        }
//                    

                    System.out.println(o2.getOriginalFileName());
                }
            }
        }

        manager.getDevices()[0].close();

    }
}

不要忘记将 jmtp.dll 文件(随 jmtp 下载提供)添加为本机库。有关更多信息,请参阅我对在 Netbeans 中包含本机库的回答。

于 2012-10-11T13:59:20.723 回答
2

像 *nix 系统一样,所有设备(包括驱动器)都具有属于公共根目录的路径,这通常对用户隐藏,因为他们使用作为这些基本路径别名的驱动器号,但您也可以通过以下方式使用完整设备路径在路径前加上"\\.\"

例如,在我的机器上 D: 翻译为"\Device\HarddiskVolume1"并且可以通过传递"\\.\HarddiskVolume1"给 CreateFile 来访问。

因此,您设备的路径可能是"\\.\Archos 5s".

于 2010-03-20T00:26:49.597 回答
0

您可以随时下载并安装 Windows 移动开发者 Powertoys (http://www.microsoft.com/download/en/details.aspx?id=10601) 并使用命令行实用程序 cecopy 从设备复制到设备,您可以使用可以从任何编程语言运行。那里也有其他选择,但它最针对.Net

于 2012-03-18T12:33:07.370 回答