首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在连接了do PC的移动设备上读写数据

在连接了do PC的移动设备上读写数据
EN

Stack Overflow用户
提问于 2017-08-17 20:35:47
回答 1查看 683关注 0票数 2

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

已尝试使用jmtp,但不起作用。

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

我该怎么做呢?

代码语言:javascript
复制
    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();
EN

回答 1

Stack Overflow用户

发布于 2017-08-18 04:59:07

有必要使用我正在使用的名为jmtpe Code的库,我用它来读取文件并发送到主机:

代码语言:javascript
复制
    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();

并将文件发回:

代码语言:javascript
复制
    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();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45735292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档