有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在与PC相连的移动设备上读写数据

我正在尝试创建一个jar客户机,它读取。连接到用户PC的安卓平板电脑中的db文件。现在,我必须手动将文件移动到windows文件系统,然后手动将文件移回

试图使用jmtp,但不起作用

我的任务是读取文件,将文件复制到设备上的其他位置,并执行一些操作

我该怎么做

    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()) {
                if(o2.getOriginalFileName().equals("copagazmobile")){

                    PortableDeviceFolderObject storage1 = (PortableDeviceFolderObject) o2;
                    for (PortableDeviceObject o3 : storage1.getChildObjects()) {
                        if(o3.getOriginalFileName().equals("backupdatabases")){
                            PortableDeviceFolderObject folder = (PortableDeviceFolderObject) o3;
                            System.out.println(o3);
                            System.out.println(folder);
                        }
                    }
                    System.out.println(o2.getOriginalFileName());
                }
            }
        }
    }

    manager.getDevices()[0].close();

共 (1) 个答案

  1. # 1 楼答案

    使用一个不同的库是必要的,我正在使用一个名为jmtpe的库 用于读取文件并发送到主机的代码:

        PortableDeviceManager manager = new PortableDeviceManager();
        PortableDevice device = manager.getDevices()[0];
    
        device.open();
    
        System.out.println("Dispositivo: " + device.getModel());
    
        System.out.println("       -");
        System.out.println("Recuperando arquivo do Tablet");
    
        // 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().equals("copagazmobile")){
    
                        PortableDeviceFolderObject storage1 = (PortableDeviceFolderObject) o2;
                        for (PortableDeviceObject o3 : storage1.getChildObjects()) {
                            if(o3.getOriginalFileName().equals("backupdatabases")){
                                PortableDeviceFolderObject storage2 = (PortableDeviceFolderObject) o3;
    
                                SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_hhmm");
                                Calendar calendar = Calendar.getInstance();
                                calendar.set(Calendar.YEAR, 1900);
                                Date data = calendar.getTime();
                                String idFile = null;
                                String fileName = null;
                                for (PortableDeviceObject o4 : storage2.getChildObjects()) {
                                    String dataArq = (o4.getOriginalFileName().substring(15, 28));
    
                                    try {
                                        if(new Date(format.parse(dataArq).getTime()).after(data)){
                                            data = new Date(format.parse(dataArq).getTime());
                                            idFile = o4.getID();
                                            fileName = o4.getOriginalFileName();
                                        }
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }
                                }
                                PortableDeviceToHostImpl32 host =  new PortableDeviceToHostImpl32();
                                try {
                                    File f = new File( "c://sqlite//db");
                                    System.out.println("Limpando diretório de manipulação: " + f);
                                    FileUtils.cleanDirectory(f); 
                                    System.out.println("Copiando arquivo: " + fileName );
                                    host.copyFromPortableDeviceToHost(idFile, "c:/sqlite/db", device);
                                    f = new File( "c://sqlite//db//"+fileName);
    
                                    File novoArquivo = new File( "c://sqlite//db//copagaz_mobile_desenv.db");
    
                                    InputStream inStream = null;
                                    OutputStream outStream = null;
                                    inStream = new FileInputStream(f);
                                    outStream = new FileOutputStream(novoArquivo);
    
                                    byte[] buffer = new byte[1024];
                                    int length;
                                    while ((length = inStream.read(buffer)) > 0){
                                        outStream.write(buffer, 0, length);
                                    }
                                    inStream.close();
                                    outStream.close();
                                    f.delete();
    
    
                                } catch (COMException e) {
                                    e.printStackTrace();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                                System.out.println("Arquivo mais recente é de: " + data);
                            }
                        }
                    }
                }
            }
        }
    
        manager.getDevices()[0].close();
    

    并将文件发送回:

        PortableDeviceManager manager = new PortableDeviceManager();
        PortableDevice device = manager.getDevices()[0];
    
        device.open();
    
        System.out.println("       -");
        System.out.println("Enviando arquivo para o Tablet");
    
        // 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().equals("copagazmobile")){
    
                        PortableDeviceFolderObject storage1 = (PortableDeviceFolderObject) o2;
                        for (PortableDeviceObject o3 : storage1.getChildObjects()) {
                            if(o3.getOriginalFileName().equals("restore")){
    
                                PortableDeviceFolderObject host =  (PortableDeviceFolderObject) o3;
                                try {
                                    File f = new File( "c://sqlite//db//copagaz_mobile_desenv.db");
                                    System.out.println("Copiando arquivo .db para o Tablet");
                                    host.addAudioObject(f, "0", "1", new BigInteger("12345"));
                                    System.out.println("Arquivo copiado");
    
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }
            }
        }
    
        manager.getDevices()[0].close();