Windows上的便携式设备路径

时间:2010-03-20 00:12:15

标签: java windows device tablet drive-letter

我实际上有一个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”......这是想要的功能吗?

感谢您的帮助 Ripei

3 个答案:

答案 0 :(得分: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下载)添加为本机库。有关详细信息,请参阅Including Native Library in Netbeans上的答案。

答案 1 :(得分:2)

与* nix系统一样,所有设备(包括驱动器)的路径都是公共根的一部分,这通常对用户隐藏,因为它们使用驱动字母作为这些基本路径的别名,但您也可以使用完整的设备路径的前缀为"\\.\"

的路径

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

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

答案 2 :(得分:0)

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