gpt4 book ai didi

c# - 大文件 : impossible to read when they are on an external HD

转载 作者:行者123 更新时间:2023-11-30 18:37:21 24 4
gpt4 key购买 nike

我有这个简单的代码:

using(FileStream fs = new FileStream(@"E:\test.bin", FileMode.Open, FileAccess.Read, FileShare.Read)
{
byte[] bytes = new byte[100];
int n = fileStream.Read(bytes, 0, bytes.Length);
}

这通常按预期工作,返回文件开头的字节数组。

令人难以置信的是,当我尝试读取位于通过 USB 连接的外部 HD 上的一个相当大的文件 (~7GB) 时,返回数组中的字节全为零并且 n 为 100。

如果我尝试使用相同类型但较小的文件,一切正常。如果我在我拥有的另一台外部 HD 上尝试相同的大文件,一切都很好。更令人难以置信的是,如果我尝试相同的大文件并使用相同的外部 HD,这会给我带来问题,但通过 eSATA 连接一切正常!

两个 HD 都是 NTFS 并且在有问题的 HD 上描述的行为不是 100% 稳定的:有时 7GB 左右的文件没有被读取,有时是; 10GB 左右的文件永远不会被读取。

关于导致此问题的原因以及解决方法的任何想法?


编辑:我试过读取 1GB 的数据,但没有任何变化。但这里还有其他提示:如果文件太大,读取 1GB 字节的时间太短,不是真正的读取;此外,如果我等待 HD 进入待机模式,并且如果我尝试从一个小文件读取 1GB,HD 退出待机状态,读取需要时间并成功,而如果我尝试读取一个大文件,HD 不会退出 sleep 模式,读数需要几毫秒,然后再次全为零。

如果我用一些值初始化字节数组,这些值在“假”读取后会被删除,我再次全部为 0。

最佳答案

考虑到相同的代码在某些驱动器上工作正常,并且您无法控制驱动器如何通过 USB 或其他方式工作,我想这只是一个硬件问题。尝试在另一台计算机上使用相同的驱动器运行程序。

关于c# - 大文件 : impossible to read when they are on an external HD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com