コード例 #1
0
ファイル: FileManager.cs プロジェクト: guilhermelhr/unityro
        /// <summary>
        /// Asyncronously read a file
        /// </summary>
        /// <param name="path">file path</param>
        /// <returns>BinaryReader containing file or null</returns>
        /// <seealso cref="BinaryReader"/>
        public static async Task <MemoryStreamReader> ReadAsync(string path)
        {
            MemoryStreamReader result = new MemoryStreamReader();

            using (FileStream sourceStream = new FileStream(path,
                                                            FileMode.Open, FileAccess.Read, FileShare.Read,
                                                            bufferSize: 4096, useAsync: true)) {
                byte[] buffer = new byte[4096];
                int    numRead;
                while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
                {
                    result.Write(buffer, 0, numRead);
                }
            }

            result.Seek(0, SeekOrigin.Begin);
            return(result);
        }