private void initialize() throws FileNotFoundException { ParcelFileDescriptor fileDescriptor; try { if (Utility.isFileUri(videoUri)) { fileDescriptor = ParcelFileDescriptor.open( new File(videoUri.getPath()), ParcelFileDescriptor.MODE_READ_ONLY); videoSize = fileDescriptor.getStatSize(); videoStream = new ParcelFileDescriptor.AutoCloseInputStream(fileDescriptor); } else if (Utility.isContentUri(videoUri)) { videoSize = Utility.getContentSize(videoUri); videoStream = FacebookSdk .getApplicationContext() .getContentResolver() .openInputStream(videoUri); } else { throw new FacebookException("Uri must be a content:// or file:// uri"); } } catch (FileNotFoundException e) { Utility.closeQuietly(videoStream); throw e; } } }
@Test public void testStatSize_writtenFile() throws Exception { ParcelFileDescriptor pfd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE); assertThat(pfd).isNotNull(); assertThat(pfd.getFileDescriptor().valid()).isTrue(); FileOutputStream os = new FileOutputStream(pfd.getFileDescriptor()); os.write(5); assertThat(pfd.getStatSize()).isEqualTo(1); // One byte. os.close(); }
public void writeFile( String key, ParcelFileDescriptor descriptor, String mimeType ) throws IOException { if (mimeType == null) { mimeType = "content/unknown"; } writeContentDisposition(key, key, mimeType); int totalBytes = 0; if (outputStream instanceof ProgressNoopOutputStream) { // If we are only counting bytes then skip reading the file ((ProgressNoopOutputStream) outputStream).addProgress(descriptor.getStatSize()); } else { ParcelFileDescriptor.AutoCloseInputStream inputStream = new ParcelFileDescriptor.AutoCloseInputStream(descriptor); totalBytes += Utility.copyAndCloseInputStream(inputStream, outputStream); } writeLine(""); writeRecordBoundary(); if (logger != null) { logger.appendKeyValue( " " + key, String.format(Locale.ROOT, "<Data: %d>", totalBytes)); } }
@Test public void testStatSize_emptyFile() throws Exception { ParcelFileDescriptor pfd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE); assertThat(pfd).isNotNull(); assertThat(pfd.getFileDescriptor().valid()).isTrue(); assertThat(pfd.getStatSize()).isEqualTo(0); pfd.close(); }
ParcelFileDescriptor fileDescriptor = this.getContentResolver().openFileDescriptor(uri, "r"); InputStream in = this.getContentResolver().openInputStream(uri); CountingInputStreamEntity entity = new CountingInputStreamEntity(in, fileDescriptor.getStatSize()); entity.setUploadListener(this); entity.setContentType("binary/octet-stream"); entity.setChunked(true); BufferedHttpEntity myEntity = null; try { myEntity = new BufferedHttpEntity(entity); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } put.setEntity(myEntity);
private String tryUpload(Uri mFileUri, YouTube youtube) { long fileSize; InputStream fileInputStream = null; String videoId = null; try { fileSize = getContentResolver().openFileDescriptor(mFileUri, "r").getStatSize(); fileInputStream = getContentResolver().openInputStream(mFileUri); String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(mFileUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); videoId = ResumableUpload.upload(youtube, fileInputStream, fileSize, mFileUri, cursor.getString(column_index), getApplicationContext()); } catch (FileNotFoundException e) { Log.e(getApplicationContext().toString(), e.getMessage()); } finally { try { fileInputStream.close(); } catch (IOException e) { // ignore } } return videoId; }
public static byte[] getFileContentFromUri(ContentResolver cr, Uri uri ) { if ( null == uri ) { return null; } ParcelFileDescriptor parcelFD = null; FileInputStream fi = null; try { parcelFD = cr.openFileDescriptor(uri, "r"); if ( null == parcelFD ) { return null; } long size = parcelFD.getStatSize(); if ( size <= 0 ){ return null; } fi = new FileInputStream( parcelFD.getFileDescriptor() ); byte[] data = new byte[ (int)size ]; fi.read(data); return data; }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } finally { closeSilently( parcelFD ); // parcel 쪽을 먼저 close 해야 함. closeSilently( fi ); } }
return null; filesize = pfd.getStatSize(); BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true;
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_PICK_FILE_DCC && data != null && data.getData() != null) { Uri uri = data.getData(); Cursor cursor = getContentResolver().query(uri, null, null, null, null); int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE); cursor.moveToFirst(); String name = DCCUtils.escapeFilename(cursor.getString(nameIndex)); long size = cursor.isNull(sizeIndex) ? -1 : cursor.getLong(sizeIndex); String channel = ((ChatFragment) getCurrentFragment()).getCurrentChannel(); try { ParcelFileDescriptor desc = getContentResolver().openFileDescriptor(uri, "r"); if (desc == null) throw new IOException(); if (size == -1) size = desc.getStatSize(); DCCServer.FileChannelFactory fileFactory = () -> new FileInputStream( desc.getFileDescriptor()).getChannel().position(0); DCCManager.getInstance(this).startUpload(((ChatFragment) getCurrentFragment()) .getConnectionInfo(), channel, fileFactory, name, size); } catch (IOException e) { Toast.makeText(this, R.string.error_file_open, Toast.LENGTH_SHORT).show(); return; } return; } mDCCDialogHandler.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); }
((ProgressNoopOutputStream) outputStream).addProgress(descriptor.getStatSize());