Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在连接到PC的移动设备上读取和写入数据_Java_File_Mobile - Fatal编程技术网

Java 在连接到PC的移动设备上读取和写入数据

Java 在连接到PC的移动设备上读取和写入数据,java,file,mobile,Java,File,Mobile,我正在尝试创建一个jar客户端,在连接到用户PC的android平板电脑中读取.db文件。现在,我必须手动将文件移动到windows文件系统,然后手动将文件移回 试图使用jmtp,但不起作用 我的任务是读取文件,将文件复制到设备上的其他位置,并执行一些操作 我该怎么做 PortableDeviceManager manager = new PortableDeviceManager(); PortableDevice device = manager.getDevices()[0

我正在尝试创建一个jar客户端,在连接到用户PC的android平板电脑中读取.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();

使用一个不同的库是必要的,我正在使用一个名为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();

“我试图使用jmtp但不起作用”的确切含义是什么?我阅读了storage.getChildObjects(),获得了我想要的目录,但下一步该怎么办?因此,您复制了一些无法立即工作的代码,因此发布了此问题。你做过任何研究吗?当然,我做过,但我不知道如何访问我想要的路径,然后复制文件…你有AccessControll异常,因为我遇到了这个错误吗?