C#File.ReadAllBytes()只读取前9k字节
我一直在尝试逐字节读取文件,以便以后可以仅从单个.exe文件创建它。 我试图读取该文件的各个字节,并将它们加载到字节数组中。 但是当我试着用这个程序读它们的时候C#File.ReadAllBytes()只读取前9k字节,c#,arrays,byte,C#,Arrays,Byte,我一直在尝试逐字节读取文件,以便以后可以仅从单个.exe文件创建它。 我试图读取该文件的各个字节,并将它们加载到字节数组中。 但是当我试着用这个程序读它们的时候 using System; using System.IO; namespace ok { class Program { static void Main(string[] args) { byte[] buffer = null; us
using System;
using System.IO;
namespace ok
{
class Program
{
static void Main(string[] args)
{
byte[] buffer = null;
using (FileStream fs = new FileStream(@"D:\Praca\programowanie\Visual Studio\C#\ok\ok\bin\Debug\net5.0\temp.docx", FileMode.Open, FileAccess.Read))
{
buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
}
for (int i = 0; i <= 13025; i++)
{
Console.WriteLine(buffer[i].ToString() + ",");
}
}
}
}
使用系统;
使用System.IO;
名称空间ok
{
班级计划
{
静态void Main(字符串[]参数)
{
字节[]缓冲区=空;
使用(FileStream fs=newfilestream(@“D:\Praca\programowanie\visualstudio\C#\ok\ok\bin\Debug\net5.0\temp.docx”、FileMode.Open、FileAccess.Read))
{
缓冲区=新字节[fs.Length];
fs.Read(缓冲区,0,(int)fs.Length);
}
对于(inti=0;对不起,这是一个愚蠢的问题。
结果表明,它可以读取所有内容,但9000是CMD窗口的大小限制。
我将只读取前8500个字节,然后手动添加它们。为什么会出现任意的13025
?旁白:如果可能的话,尽量避免将文件完全加载到内存中,特别是当它们这么大的时候。您可以逐位读取流byte[]buffer=File.ReadAllBytes(“文件名”)
?13025是文件的大小。另外,你能详细介绍一下流一点一点的方法吗?我感兴趣的不是分配一个足够容纳整个文件的缓冲区,而是分配一个1024字节大的缓冲区,然后重复读取1024字节,然后打印到控制台,然后重复……你甚至可以有一个1-字节缓冲区(所以读取1个字节,打印它,读取另一个字节,打印它,等等),它可能不会花费您太多的性能。您对输出做什么?如果您要将它们写入一个文件,那么您可以使用例如MyConsoleApplication.exe>SomeFile