我研究了如何将大文件读为小文件,但前提是我必须从头开始。我希望能够从中间读到任意一点。我意识到这听起来很疯狂,但我有我的理由。当我将位置设置为大于0时,由于某种原因,我什么都没写出来。我将得到一个充满空值的文件。
我认为这会将2.5兆字节的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();
}
答案 0 :(得分:1)
您曾说过“我认为这会将2.5兆字节的300K读入文件” ;但是您有limit
,而Seek值则相反。搜索位置需要设置为300000; limit
应该是2500000。
其他提示:
using
块中声明的局部变量(即对stream
执行此操作)。stream.Position = newposition;
,因为这正是Seek所做的。