Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 使用googledriveapi上传文件_Java_Android_Google Apis Explorer - Fatal编程技术网

Java 使用googledriveapi上传文件

Java 使用googledriveapi上传文件,java,android,google-apis-explorer,Java,Android,Google Apis Explorer,我正试图通过编程方式将现有的.vcf文件上载到Google Drive。到目前为止,它只保存一个空文件 这可能很简单,但我不熟悉谷歌驱动Api。 代码如下: // Perform I/O off the UI thread. new Thread() { @Override public void run() { // write content to DriveContents File f = n

我正试图通过编程方式将现有的.vcf文件上载到Google Drive。到目前为止,它只保存一个空文件

这可能很简单,但我不熟悉谷歌驱动Api。 代码如下:

    // Perform I/O off the UI thread.
    new Thread() {
        @Override
        public void run() {
            // write content to DriveContents
            File f = new File("גיבוי אנשי קשר" + ".vcf");
            filepath = f.getAbsolutePath().toString();


            //String inFileName = Environment.getExternalStorageDirectory().getPath() + "גיבוי אנשי קשר" + ".vcf" ;
            String inFileName = filepath;
            File backupFile = new File(inFileName);
            FileInputStream inputStream = null;
            try {
                inputStream = new FileInputStream(backupFile);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            byte[] buffer = new byte[8 * 1024];

            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(driveContents.getOutputStream());
            int n = 0;
            try {
                while ((n = bufferedInputStream.read(buffer)) > 0) {
                    bufferedOutputStream.write(buffer, 0, n);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                bufferedInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            //final MimeTypeMap mime = MimeTypeMap.getSingleton();
           // String tmptype = mime.getMimeTypeFromExtension("vcf");
            MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                    .setTitle("גיבוי אנשי קשר")
                   .setMimeType("text/x-vcard")
                    .setStarred(true).build();
检查用于上载文件的位置

确保指定uploadType,因为它是必需的参数

以下是文档中的片段:

File fileMetadata = new File();
fileMetadata.setName("photo.jpg");
java.io.File filePath = new java.io.File("files/photo.jpg");
FileContent mediaContent = new FileContent("image/jpeg", filePath);
File file = driveService.files().create(fileMetadata, mediaContent)
        .setFields("id")
        .execute();
System.out.println("File ID: " + file.getId());

下面是我用来将csv文件保存为电子表格的一些代码。 文件夹需要驱动器API,文件需要工作表API

使用此快速启动:

如果有任何问题,请提问。 希望有帮助

   @Override
    protected Boolean doInBackground(Void... params) {
        try {
            deviceOnline = isDeviceOnline();
            if (!deviceOnline) {
                Log.e(LOG_CONNECT, "in doInBackground() - Device is not connected to network");
                cancel(true);
                return false;
            }

            Boolean uploadToDriveSuccessfull = uploadFileToDrive();
            if (uploadToDriveSuccessfull) {
                Log.d(LOG_CONNECT, "in doInBackground() - File Uploaded To Drive = True ");
                return true;
            }
            else {
                Log.e(LOG_CONNECT, "in doInBackground() - File Uploaded To Drive = False ");
                //TODO - Upload failed - trigger second try to save to Drive
                return false;
            }
        } catch (Exception e) {
            Log.e(LOG_CONNECT, "in doInBackground() - error: " + e.getMessage());
            mLastError = e;
            cancel(true);
            return false;
        }
    }

   private Boolean uploadFileToDrive() {
       Log.d(LOG_CONNECT, "in uploadFileToDrive()");

       //Create the DriveFolderID once
       if (getDriveFolderID() == null ) {
           Log.d(LOG_CONNECT, "in uploadFileToDrive() - creating new folder");
           setDriveFolderID(createFolderInDrive());
       }

        String fileId;
        fileId = saveOneFileToDrive(mBackupFileUri,mDriveFolderId, mBackupFileName);

        if(fileId != null){
            //updates the shared pref
            setmDriveSavedFileId(fileId);
            setFileName(mBackupFileName,driveTag);
            Log.d(LOG_CONNECT, "in uploadFileToDrive() - file saved, ID: " + fileId);
            return true;
        }
        else{
            Log.e(LOG_CONNECT, "in uploadFileToDrive() - file NOT saved");
            return false;
        }
   }


    private String createFolderInDrive () {
       Log.d(LOG_CONNECT, "in createFolderInDrive()");
       File fileMetadata = new File();
       fileMetadata.setName(getString(R.string.app_name));
       fileMetadata.setMimeType("application/vnd.google-apps.folder");

       File file = null;
       try {
           file = mDriveService.files().create(fileMetadata)
                   .setFields("id")
                   .execute();
       } catch (IOException e) {
           Log.e(LOG_CONNECT, "in createFolderInDrive() - IOException: " + e.getMessage());
           e.printStackTrace();
           return null;
       }
       Log.d(LOG_CONNECT, "in createFolderInDrive() - FOLDER ID: " + file.getId());
       Log.d(LOG_CONNECT, "in createFolderInDrive() - FOLDER stared = " + file.getStarred());

       return file.getId();
   }


   //This function Save new file to Drive
   private String saveOneFileToDrive (Uri localFileUri,String driveFolderId, String fileNameOnDrive){
       Log.d(LOG_CONNECT, "in saveOneFileToDrive()");
       if (localFileUri == null) {
           Log.e(LOG_CONNECT, "in saveOneFileToDrive() - fileUri is null");
           return null;
       }

       String filePathString = localFileUri.getPath();
       Log.d(LOG_CONNECT, "in saveOneFileToDrive() - fileString= " + filePathString);
       File fileMetadata = new File();

       //Set csv file name with real one with date.
       fileMetadata.setName(fileNameOnDrive);
       String fields;
       if (driveFolderId != null) {
           Log.d(LOG_CONNECT, "in saveOneFileToDrive() - FOLDER ID is: " + driveFolderId);
           fileMetadata.setParents(Collections.singletonList(driveFolderId));
           fields = "id, parents";
       } else {
           Log.d(LOG_CONNECT, "in saveOneFileToDrive() - folder is null");
           fields = "id";
       }

       //Saving SpreadSheet - you can change it
       fileMetadata.setMimeType("application/vnd.google-apps.spreadsheet");

       java.io.File filePath = new java.io.File(filePathString);
       FileContent mediaContent = new FileContent("text/csv", filePath);
       Log.d(LOG_CONNECT, "in saveOneFileToDrive() - mediaContent size= " + mediaContent.getLength());

       //print the file to log//
       BufferedReader br = null;
       try {
           br = new BufferedReader(new FileReader(mediaContent.getFile()));
       } catch (FileNotFoundException e) {
           Log.d(LOG_CONNECT, "in saveOneFileToDrive() - FileNotFoundException= " + e.getMessage());
           e.printStackTrace();
       }
       String line = null;
       try {
           while ((line = br.readLine()) != null) {
               Log.d(LOG_CONNECT, "in saveOneFileToDrive() - File info= " + line);
           }
       } catch (IOException e) {
           Log.d(LOG_CONNECT, "in saveOneFileToDrive() - IOException= " + e.getMessage());
           e.printStackTrace();
       }
       Log.d(LOG_CONNECT, "in saveOneFileToDrive() - FINISHED PRINT");
       //End of print to log//

       File file = null;

       //updating the member value from shared pref.
       getmDriveSavedFileId();

       try {
           Log.d(LOG_CONNECT, "in saveOneFileToDrive() - starting to create file");
           file = mDriveService.files().create(fileMetadata, mediaContent)
                   .setFields(fields)
                   .execute();
       } catch (UserRecoverableAuthIOException e) {
           Log.e(LOG_CONNECT, "in saveOneFileToDrive() - UserRecoverableAuthIOException error: " + e.getCause());
           startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
           return null;
       } catch (IOException e) {
           Log.e(LOG_CONNECT, "in saveOneFileToDrive() - IOException error: " + e.getCause()
                   + ", message: " + e.getMessage());
           e.printStackTrace();
           return null;
       }
       Log.d(LOG_CONNECT, "in saveOneFileToDrive() - File ID: " + file.getId());
       return file.getId();
   }

这个例子不相关,我在github中遵循了GoogleAPI的例子,这就是我想到的。你能用我给出的代码想出任何解决方案吗?