Путь к переносному устройству в Windows

У меня на самом деле есть вопрос по Windows/Java. У меня есть подключенное устройство, к которому я хочу получить доступ через Java. Обычно вы можете получить доступ, например, к USB-флешке через букву диска... но этот планшет отображается в Windows как "Переносное устройство"... что означает, что путь похож на "Компьютер \Archos 5S" и есть нет буквы диска.

Я хочу получить доступ к файлу на этом устройстве через Java, но не могу найти правильный путь к нему. Есть похожий вопрос, но без продуктивного ответа. Или есть другой способ получить доступ к этому устройству через Java?


На самом деле я не решил эту проблему... Я до сих пор не могу получить доступ к такому устройству через Java.

В данный момент я пытаюсь получить доступ к Windows ShellFolder в Java. Папка Shell вроде: "Shell:::{35786D3C-B075-49b9-88DD-029876E11C01}"

Это возможно с Java? Недавно я обнаружил класс Sun.awt "ShellFolder"... это разыскиваемая функция?

спасибо за вашу помощь Ripei

3 ответа

Решение вышеуказанной проблемы с использованием библиотеки 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) в качестве собственной библиотеки. Для получения дополнительной информации, см. Мой ответ на Включение Native Library в Netbeans.

Как и в системах *nix, все устройства (включая диски) имеют пути, являющиеся частью общего корня, обычно они скрыты от пользователей, поскольку они используют буквы дисков, которые являются псевдонимами этих основных путей, но вы также можете использовать полные пути устройств, префикс пути с "\\.\"

Например, на моей машине D: переводится как "\Device\HarddiskVolume1" и можно получить, передав "\\.\HarddiskVolume1" Создать файл.

Так что путь к вашему устройству, вероятно, "\\.\Archos 5s",

Вы всегда можете скачать и установить Windows Mobile для разработчиков Powertoys (http://www.microsoft.com/download/en/details.aspx?id=10601) и скопировать с устройства на устройство и использовать для этого утилиту командной строки cecopy, которую вы может работать с любого языка программирования. Там есть и другие варианты, но они больше всего нацелены на.Net

Другие вопросы по тегам