今天在学图的算法做测试是,需要读取文本文件中的点坐标,本来很简单的事情,折腾了半天,记录一下找到的一种简单粗暴的解决方法,以便以后查看。
第一种方法 : StringReader
string line = "";
using (StreamReader sr = new StreamReader("graph.txt")) // 读取文件所在路径
{
while (!sr.EndOfStream) // 判读是否读完
{
line = sr.ReadLine(); // 读取一行
string[] points = line.Split(' '); // 拆分当前行
foreach (string item in points) // 转换 string 为 int
{
int.TryParse(item, out int vertice);
Console.Write(vertice + " ");
}
}
}
第二种方法:BinaryReader (转换为二进制文件读取)
BinaryWriter bw;
BinaryReader br;
string line = "";
bw = new BinaryWriter(new FileStream("converFromGraph", FileMode.Create));
using (StreamReader sr = new StreamReader("graph.txt"))
{
while (!sr.EndOfStream)
{
line = sr.ReadLine();
string[] points = line.Split(' ');
foreach (string point in points)
{
int.TryParse(point, out int vertice);
bw.Write(vertice); // 写入二进制文件
}
}
}
bw.Close();
// 读取二进制文件
br = new BinaryReader(new FileStream("mydata.dat", FileMode.Open));
br.BaseStream.Seek(0, SeekOrigin.Begin);
try
{
while (true) // 读完所有文件
{
int x = br.ReadInt32();
Console.WriteLine(x);
}
}
catch(System.IO.EndOfStreamExceptio) // 读取文件完成,报异常
{
Console.WriteLine("读写完成");
}
数据类型与字节长度:
byte -> System.Byte (字节型, 占 1 个字节, 表示 8 位正整数, 范围 0 ~ 255)
char -> System.Char (字符型, 占 2 个字节, 表示一个 unicode 字符)
short -> System.Int16 (短整型, 占 2 个字节, 表示 16 位整数, 范围 -32,768 ~ 32,767)
uint -> System.Uint32 (无符号整型, 占 2 个字节, 表示 16 位正整数, 范围 0 ~ 4,294,967,295)
int -> System.Int32 (整型, 占 4 个字节, 表示 32 位整数, 范围 -2,147,483,648 ~ 2,147,483,647)
short -> System.Int16 (短整型, 占 2 个字节, 表示 16 位整数, -32,768 ~ 32,767)
float -> system.Single (单精度浮点型, 占 4 个字节)
double -> System.Double (双精度浮点型, 占 8 个字节)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有