[英]Save a portion of a binary file
我研究了如何将大文件读为小文件,但前提是要从头开始。 我希望能够从中间读到任意一点。 我意识到这听起来很疯狂,但我有我的理由。 当我将位置设置为大于0时,由于某种原因,我什么都没写出来。 我将得到一个充满空值的文件。
我以为这将从2.5MB中读取300K到文件中。
public static FileStream stream = new FileStream(@"file.dat", FileMode.Open, FileAccess.Read);
public static FileStream shortFile = null;
int limit = 300000;
public MainWindow()
{
byte[] block = new byte[limit];
using (FileStream fs = File.Create("tempfile.dat"))
{
var newposition = stream.Seek(2500000, SeekOrigin.Begin);
stream.Position = newposition;
while (stream.Read(block, 0, limit) > 0 && stream.Position <= limit)
{
fs.Write(block, 0, block.Length);
}
}
InitializeComponent();
}
您已经说过: “我认为这会将2.5兆字节的300K读入文件中” ; 但您有limit
,而Seek则反之。 搜索位置需要设置为300000; limit
应为2500000。
其他提示:
using
块时声明(即对stream
)。 stream.Position = newposition;
因为那是Seek刚刚做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.