C#中如何從一個文本文件讀取數字儲存到一個byte數組里面


我一個文本文檔中有N個二維數組,byte型的中間用#######################分割 數字用空格分隔
我想一次讀取一個,放進一個byte[,]數組里面,大小是固定的[15,15],下次在讀取下一個   求教各位該怎么辦
例如
 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0
 0 0 0 0 0 0 6 0 0 0 0 4 0 0 0
 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0
 0 0 0 1 6 1 1 1 6 1 1 1 1 0 0
 0 0 0 1 0 0 0 0 2 2 2 2 1 0 0
 4 4 4 1 0 4 0 3 2 2 2 2 1 0 7
 0 0 0 3 0 3 0 5 4 2 2 2 1 0 0
 0 0 0 3 0 0 0 0 0 0 0 0 1 0 0
 0 0 0 1 0 0 6 0 0 0 0 4 1 0 0
 0 0 0 3 1 1 0 1 1 3 1 1 0 0 3
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
 0 0 4 0 0 0 0 0 7 4 0 0 0 0 0
 0 0 0 0 4 0 0 0 0 3 0 0 7 0 0
 0 4 0 3 0 0 0 0 0 0 0 0 7 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##############################
 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 7 0 0 0 0 0 0 0 7 0 0
 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0
 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7
 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 7 0 0 7 0 0 0 0 0 7
 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0
 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7
##############################

8 个解决方案

#1


readbytes();

#2


 FileStream fs = File.OpenRead(filename);

  FileStream fs = FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);

  byte[] data = new byte[fs.Length];

  fs.Read (data, 0, data.Length);

#3



     string _Text = @"0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 
0 0 0 0 0 0 6 0 0 0 0 4 0 0 0 
0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 
0 0 0 1 6 1 1 1 6 1 1 1 1 0 0 
0 0 0 1 0 0 0 0 2 2 2 2 1 0 0 
4 4 4 1 0 4 0 3 2 2 2 2 1 0 7 
0 0 0 3 0 3 0 5 4 2 2 2 1 0 0 
0 0 0 3 0 0 0 0 0 0 0 0 1 0 0 
0 0 0 1 0 0 6 0 0 0 0 4 1 0 0 
0 0 0 3 1 1 0 1 1 3 1 1 0 0 3 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 
0 0 4 0 0 0 0 0 7 4 0 0 0 0 0 
0 0 0 0 4 0 0 0 0 3 0 0 7 0 0 
0 4 0 3 0 0 0 0 0 0 0 0 7 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
############################## 
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 7 0 0 0 0 0 0 0 7 0 0 
0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 
0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 7 0 0 7 0 0 0 0 0 7 
0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 
0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 
##############################";

            string[] _List = _Text.Split(new char[] { '\r', '\n', '#' }, StringSplitOptions.RemoveEmptyEntries);

            IList<byte[,]> _BytesList = new List<byte[,]>();

            byte[,] _Bytes = new byte[15, 15];
            int _ReadIndex = 0;
            for (int i = 0; i != _List.Length; i++)
            {
                if (_List[i].Trim().Length == 0) continue;

                string[] _BytesText = _List[i].Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (_BytesText.Length != 15) continue;

                for (int z = 0; z != 15; z++)
                {
                    _Bytes[_ReadIndex, z] = Convert.ToByte(_BytesText[z]);
                }
                _ReadIndex++;
                if (_ReadIndex == 15)
                {
                    _BytesList.Add(_Bytes);
                    _ReadIndex = 0;
                }

            }

#4


謝謝樓上幾位的回答,三樓朋友的代碼考慮的很全面謝謝

小弟還有個問題,就是假如我文本里面的數組很多我想一個一個讀取,而不是一下子讀到內存里面來,該怎么辦可不可以每次讀取某幾行,這個函數該怎么用?
謝謝各位前輩了

#5


private void button2_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream("test.txt", FileMode.Open);
            int index = 7;//取第幾行數據,從0開始,此處可由用戶輸入
            const int length = 32;//每行的長度,15個字符+15個空格+回車換行2=32
            byte[] buff = new byte[length];
            long line = index * length;//計算第index行前面占用的字節數
            fs.Seek(line, SeekOrigin.Begin);//移動文件流指針位置
            fs.Read(buff, 0, length);//從指定位置讀取指定長度字節賦值給buff
            fs.Close();
            
            for (int i = 0; i < buff.Length; i+=2)//i++保留空格,i+=2去掉空格
            {
                Console.Write((char)buff[i]);//輸出結果符合要求,buff就是要的結果
            }
            
        }

#6


另外,如果第N行內容是"############",則不是所需要的,可加個判斷直接return

#7


文本文件應該用文本模式讀寫,用StreamReader/StreamWriter
如果文件中不只包含文本,應該用二進制模式讀寫,BinaryReader/BinaryWriter

#8


StreamReader StreamWriter 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: