7

私は実際にWindows/Javaの質問を持っています。Java経由でアクセスしたいプラグインデバイスがあります。通常、ドライブ文字を介してUSBスティックなどにアクセスできます...しかし、このタブレットはWindowsによって「ポータブルデバイス」として表示されます...つまり、パスは「Computer \ Archos5S」のようなものであり、ドライブ文字はありません。

このデバイス上のファイルにJava経由でアクセスしたいのですが、そのファイルへの正しいパスがわかりません。そこにも同様の質問がありますが、生産的な答えはありません。または、Javaを介してこのデバイスにアクセスする別の方法はありますか?


実際、私はこの問題を解決していません...私はまだJava経由でそのようなデバイスにアクセスすることができません。

現在、JavaでWindowsの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: は次のように変換され、 CreateFile"\Device\HarddiskVolume1"に渡すことでアクセスできます。"\\.\HarddiskVolume1"

したがって、デバイスへのパスはおそらく"\\.\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 に答える