C# 从文件导入自定义ascii格式

C# 从文件导入自定义ascii格式,c#,C#,我需要导入一个自定义文件格式的ascii文件 有些数据存储在块中,包括开始块和结束块。其他数据存储时不带块分隔符 一个例子是: $Sheet Sposx posy dimx dimy 图纸标签列表 $EndSheet 另一个是: 文本注释posx posy方向维度~ 正文 现在,将这些数据导入某种结构的最佳/最通用的方法是什么 问候 Jakob Justesen您需要读取一行:如果是块开始,则切换到处理块读取的方法。如果不是,则切换到将处理非块读取的方法 实现这一点的最“通用”的方法是使用一个工

我需要导入一个自定义文件格式的ascii文件

有些数据存储在块中,包括开始块和结束块。其他数据存储时不带块分隔符

一个例子是:
$Sheet
Sposx posy dimx dimy
图纸标签列表
$EndSheet

另一个是:
文本注释posx posy方向维度~
正文

现在,将这些数据导入某种结构的最佳/最通用的方法是什么

问候

Jakob Justesen

您需要读取一行:如果是块开始,则切换到处理块读取的方法。如果不是,则切换到将处理非块读取的方法

实现这一点的最“通用”的方法是使用一个工厂方法,该方法返回所需的Reader类。某些伪代码可能如下所示:

Open [File]
while not EOF
  Read [Line]
  var [Reader] = ReaderFactory.GetReader([Line])
  var [Record] = [Reader].Read([File])
  Do what you want with record
wend
Close [File]

您如何表示我留给您作为练习的不同记录类型:)

您的目标有点不清楚--您能定义最佳记录类型吗?如果您只有两种文件格式,并且只需要一个一次性工具即可获得,那么泛型可能不是有用的第二个目标。您没有提供足够的信息来获得有意义的答案。我为我没有创建的文件格式编写了许多文件读取器(您是否正在尝试导入由另一个没有源代码的应用程序创建的文件?)。您需要知道数据的分隔符,如果字段是可选的,等等。如果没有这些知识,您无法定义解析器。没有足够的信息来制定最佳答案,甚至是粗略的答案。只有两种格式,似乎根本不需要通用。您尝试了什么?有一个纽约源代码,这样我们就可以看到你的方向了?谢谢你的回复。这两个例子中,有一组其他块,一个可能是$Comp,等等…我的重点是如何最好地从文件导入ascii数据。不是确切的代码,而是最好的原则。谢谢!这看起来像是我可以使用的东西.这是ReaderFactory的好主意。