在项目中碰见一个问题:通过服务器传送文件。
具体过程:1,现根据文件大小判断硬盘上是否有足够大的空间。
2,根据文件大小建立一个空的文件,占用这个空间。
3,开始接收文件,存放到刚才建立的文件中,及逐步的使用文件数据替代空文件。
解决方案:
1,判断硬盘剩余空间大小:
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")] public static extern bool GetDiskFreeSpaceEx( string lpDirectoryName, out UInt64 lpFreeBytesAvailable, out UInt64 lpTotalNumberOfBytes, out UInt64 lpTotalNumberOfFreeBytes);
ulong freeBytesAvailable = 0; ulong totalNumberOfBytes = 0; ulong totalNumberOfFreeBytes = 0; GetDiskFreeSpaceEx( "D:\\", out freeBytesAvailable, out totalNumberOfBytes, out totalNumberOfFreeBytes);
2,建立一个空的文件
FileStream fs = new FileStream(@"D:\AAAA\" + fileName, FileMode.Create, FileAccess.Write); byte[] buffer = new byte[fileLength]; fs.Write(buffer, 0, fileLength); fs.Close();
3,开始接收文件,存放到刚才建立的文件中,及逐步的使用文件数据替代空文件
FileStream fs = new FileStream(@"D:\AAAA\" + fileName, FileMode.OpenOrCreate, FileAccess.Write);
fs.Position = 0;
fs.Seek(0, SeekOrigin.Current); fs.Write(realBody, 0, fileLength);
4,最后关闭FileStream
fs.Close();