Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#File.ReadAllBytes()只读取前9k字节_C#_Arrays_Byte - Fatal编程技术网

C#File.ReadAllBytes()只读取前9k字节

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

我一直在尝试逐字节读取文件,以便以后可以仅从单个.exe文件创建它。 我试图读取该文件的各个字节,并将它们加载到字节数组中。 但是当我试着用这个程序读它们的时候

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