好的,我发现了问题。
问题来自
o2.getID()参数给方法
copy.copyFromPortableDeviceToHost。
因为
o2代表文件夹,而不是文件夹中的文件,所以不可能发送文件夹,为了成功,我需要在文件夹中发送文件。
因此,我将
PortableDeviceObjecto2强制转换为
PortableDeviceFolderObject,以便
targetFolder.getChildObjects()在
PortableDeviceFolderObject代表文件中获得子对象列表,然后可以从该文件夹中迭代任何子对象。
对于每个文件,我
copy.copyFromPortableDeviceToHost使用正确的ID 调用methode 。
这是更正代码,从计算机到设备以及从设备到计算机的复制/传输文件。
希望对您有所帮助。
public class USBTransfertMain { public static void main(String[] args) throws Throwable { jMTPeMethode(); } private static void jMTPeMethode() { PortableDeviceFolderObject targetFolder = null; PortableDeviceManager manager = new PortableDeviceManager(); PortableDevice device = manager.getDevices()[0]; // Connect to USB tablet 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()) { if(o2.getOriginalFileName().equalsIgnoreCase("testFolder")) { targetFolder = (PortableDeviceFolderObject) o2; } System.out.println(o2.getOriginalFileName()); } copyFileFromComputerToDeviceFolder(targetFolder); PortableDeviceObject[] folderFiles = targetFolder.getChildObjects(); for (PortableDeviceObject pDO : folderFiles) { copyFileFromDeviceToComputerFolder(pDO, device); } } } manager.getDevices()[0].close(); } private static void copyFileFromDeviceToComputerFolder(PortableDeviceObject pDO, PortableDevice device) { PortableDeviceToHostImpl32 copy = new PortableDeviceToHostImpl32(); try { copy.copyFromPortableDeviceToHost(pDO.getID(), "C:\TransferTest", device); } catch (COMException ex) { ex.printStackTrace(); } } private static void copyFileFromComputerToDeviceFolder(PortableDeviceFolderObject targetFolder) { BigInteger bigInteger1 = new BigInteger("123456789"); File file = new File("C:\GettingJMTP.pdf"); try { targetFolder.addAudioObject(file, "jj", "jj", bigInteger1); } catch (Exception e) { System.out.println("Exception e = " + e); } }}


