C#中如何从一个文本文件读取数字储存到一个byte数组里面

lx2222 2009-12-24 08:44:44
我一个文本文档中有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
##############################
...全文
866 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter20091001 2009-12-24
  • 打赏
  • 举报
回复
文本文件应该用文本模式读写,用StreamReader/StreamWriter
如果文件中不只包含文本,应该用二进制模式读写,BinaryReader/BinaryWriter
  • 打赏
  • 举报
回复
另外,如果第N行内容是"############",则不是所需要的,可加个判断直接return
  • 打赏
  • 举报
回复
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就是要的结果
}

}
lx2222 2009-12-24
  • 打赏
  • 举报
回复
谢谢楼上几位的回答,三楼朋友的代码考虑的很全面谢谢

小弟还有个问题,就是假如我文本里面的数组很多我想一个一个读取,而不是一下子读到内存里面来,该怎么办可不可以每次读取某几行,这个函数该怎么用?
谢谢各位前辈了
zgke 2009-12-24
  • 打赏
  • 举报
回复

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;
}

}
liu2835993 2009-12-24
  • 打赏
  • 举报
回复
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);
ztenv 2009-12-24
  • 打赏
  • 举报
回复
readbytes();
shenopkss 2009-12-24
  • 打赏
  • 举报
回复
StreamReader StreamWriter

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧