向存在的文件中写入数据

在项目中碰见一个问题:通过服务器传送文件。

具体过程: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();





 

你可能感兴趣的:(String,服务器,buffer,byte)