C#设置文件大小

C#设置文件大小,c#,C#,我有一个用于下载的应用程序。我注意到,如果我让它创建占位符文件,然后暂停它,它仍然会显示占位符文件的大小,而不是它的大小。而且,看看我硬盘上的可用空间,我可以看到它真的占用了那么多空间。这让我好奇他们是怎么做到的;我一直在想如何设置文件大小。我找到了很多关于如何获取文件大小的信息,但没有找到关于如何设置文件大小的信息。我试过的都没用。好奇是否有人知道这是否可以用C#?实现,您可以使用: 如果给定值小于流的当前长度,则流将被截断。在这种情况下,如果当前位置大于新长度,则将当前位置移动到流的最后一个

我有一个用于下载的应用程序。我注意到,如果我让它创建占位符文件,然后暂停它,它仍然会显示占位符文件的大小,而不是它的大小。而且,看看我硬盘上的可用空间,我可以看到它真的占用了那么多空间。这让我好奇他们是怎么做到的;我一直在想如何设置文件大小。我找到了很多关于如何获取文件大小的信息,但没有找到关于如何设置文件大小的信息。我试过的都没用。好奇是否有人知道这是否可以用C#?

实现,您可以使用:

如果给定值小于流的当前长度,则流将被截断。在这种情况下,如果当前位置大于新长度,则将当前位置移动到流的最后一个字节。如果给定值大于流的当前长度,则流将展开,并且当前位置保持不变。如果流已展开,则新旧长度之间的流内容未定义


,?等一下。。。。Bing的小故障?实际上,我搜索了那个精确的搜索字符串,但没有一个结果出现。这是如何工作的?使用FileStream.SetLength()时必须小心。写入流后,setLength(0)将刷新上次写入文件的内部缓冲区,结果文件将不为0@彼得:哎呀。。。在此之前调用
Flush
可以解决问题吗?(不可否认,写入流然后截断文件是很奇怪的…)我不太了解FileStream的细节。我首先注意到代码中的问题,然后检查。在那里可以看到://句柄缓冲更新。如果(_writePos>0){FlushWrite(false);}这会将FileStream缓冲区传递给操作系统。没错,在SetLength()之前添加Flush()可以解决问题。在下面的代码中,只有d被写入文件。没有刷新,cd就会被写入<代码>streamWriter.WriteLine(“c”);streamWriter.Flush();fileStream.SetLength(0);streamWriter.WriteLine(“d”)