2010-03-20 60 views
6

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

我想通过Java访问此设备上的文件,但我无法找出正确的路径。有一个类似的问题,但没有一个有效的答案。还是有另一种方式通过Java访问这个设备?


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

目前我正试图访问Java中的Windows ShellFolder。 一个Shellfolder,如:“Shell ::: {35786D3C-B075-49b9-88DD-029876E11C01}”

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

感谢您的帮助 Ripei

+0

*我已经在“MSC”模式下将我的设备连接到了我的电脑,但在电脑上看不到它:* 此模式 - MSC(海量存储类) - 仅适用于Linux计算机,在ARCHOS Internet Tablet上作为外置硬盘。对于高级Windows用户,可以从互联网上获取驱动程序(由ARCHOS技术支持团队自行承担风险 - 不支持),这将允许您在Windows计算机上将Ext3类型分区安装为外置硬盘驱动器。 http://wiki.archosfans.com/index.php?title=Archos_FAQ – ecle 2012-03-18 13:25:05

+0

更多... * USB连接模式下MSC和MTP的选项对我来说有什么作用?* 这些是它连接到一台电脑。 MSC(海量存储类)是最常见的USB连接方法。 MTP(媒体传输协议)是用于常规文件和Windows Media Player文件的智能传输系统。如果您使用的是Windows,则应以MTP模式连接。如果您使用的是Linux,那么您应该以MSC模式连接。 – ecle 2012-03-18 13:26:40

回答

2

像* nix系统,所有设备(包括驱动器)有有一个共同的根源的一部分,这通常是对用户隐藏的,因为他们使用的驱动器盘符这是别名路径这些基本路径,但是你也可以通过在前面与"\\.\"

举例来说,在我的机器d的路径使用完整设备路径:意为"\Device\HarddiskVolume1",并可以通过传递"\\.\HarddiskVolume1" CreateFile时进行访问。

所以你的设备的路径可能是"\\.\Archos 5s"

+0

谢谢...这似乎是正确的方式,虽然我的问题还没有解决到现在。 我无法通过“\\访问任何驱动器或“爱可视5S” \ - 放慢参数,但我发现此链接:。http://docs.plt-scheme.org/reference/windowspaths.html 然后我尝试通过“\\?\ C:”访问一个驱动器,这个工程...但它不适用于“\\?\爱可视5S” 你有什么想法? 谢谢提前 ripei – Ripei 2010-03-20 12:09:39

+0

尝试使用'GetLogicalDriveStrings'和'QueryDosDevice',也许你的设备已经有一个别名,即使它不是一个驱动器号。 – 2010-03-20 22:45:50

+0

看到这个简单的C程序的枚举所有设备的例子 http:///pastebin.com/Y3pGu5hS – 2010-03-20 22:50:54

0

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

4

使用JMTP库解决上述问题上https://code.google.com/p/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