/// <exception cref="System.IO.IOException"></exception> public static void CopyStream(InputStream @is, OutputStream os) { int n; byte[] buffer = new byte[16384]; while ((n = @is.Read(buffer)) > -1) { os.Write(buffer, 0, n); } os.Close(); @is.Close(); }
/// <exception cref="System.IO.IOException"></exception> public static void CopyStreamToFile(InputStream @is, FilePath file) { OutputStream os = new FileOutputStream(file); int n; byte[] buffer = new byte[16384]; while ((n = @is.Read(buffer)) > -1) { os.Write(buffer, 0, n); } os.Close(); @is.Close(); }
internal virtual void Read(InputStream inputStream) { byte[] buffer = new byte[1024]; int len; length = 0; try { while ((len = inputStream.Read(buffer)) != -1) { outStream.Write(buffer, 0, len); sha1Digest.Update(buffer); md5Digest.Update(buffer); length += len; } } catch (IOException e) { throw new RuntimeException("Unable to read from stream.", e); } finally { try { inputStream.Close(); } catch (IOException e) { Log.W(Database.Tag, "Exception closing input stream", e); } } }
public virtual bool StoreBlobStream(InputStream inputStream, BlobKey outKey) { FilePath tmp = null; try { tmp = FilePath.CreateTempFile(TmpFilePrefix, TmpFileExtension, new FilePath(path) ); FileOutputStream fos = new FileOutputStream(tmp); byte[] buffer = new byte[65536]; int lenRead = inputStream.Read(buffer); while (lenRead > 0) { fos.Write(buffer, 0, lenRead); lenRead = inputStream.Read(buffer); } inputStream.Close(); fos.Close(); } catch (IOException e) { Log.E(Log.TagBlobStore, "Error writing blog to tmp file", e); return false; } BlobKey newKey = KeyForBlobFromFile(tmp); outKey.SetBytes(newKey.GetBytes()); string path = PathForKey(outKey); FilePath file = new FilePath(path); if (file.CanRead()) { // object with this hash already exists, we should delete tmp file and return true tmp.Delete(); return true; } else { // does not exist, we should rename tmp file to this name tmp.RenameTo(file); } return true; }