我已打开Google驱动器,文件可供选择。单击确认按钮后,我将收到回复并致电InputStream
并开始阅读该文件。这是我的代码,它读取了InputStream
。
var pendingResult = driveFile.OpenAsync(GoogleApiClient, DriveFile.ModeReadOnly, this)
.ContinueWith((resultTask) =>
{
var driveContentResults = resultTask.Result;
var driveContent = driveContentResults.DriveContents;
if (_dialog != null && _dialog.IsShowing)
_dialog.Dismiss();
if (driveContentResults.Status.IsSuccess)
{
if (FileReadyCallback != null)
{
var length = driveContent.InputStream.Length;
//var data = new byte[length];
//driveContent.InputStream.Read(data, 0, data.Length);
//FileReadyCallback(this, data);
}
//var absolutePath = FileUtilities.SaveStreamToDownloadDirectory(driveContent.InputStream, Guid.NewGuid() + ".pdf");
//SendResultToCallingActivity(absolutePath);
}
});
当应用程序到达driveContent.InputStream.Length
时,断点显示每个内容实例只能调用InputStream
一次。在代码中,该行是我对输入流的第一次调用。
答案 0 :(得分:0)
如错误所示,不是每次都调用driveContent.InputStream
,而是创建名为input
的变量并分配driveContent.InputStream
,然后使用input
读取字节,获取长度或其他方法。
var input = driveContent.InputStream
然后替换为
var length = input.Length;
和
input.Read(data, 0, data.Length);