【发布时间】:2014-09-15 17:25:27
【问题描述】:
我正在尝试从给定的 .txt 或 .csv 平面文件中识别 EOL 字符是什么。根据平面文件中第一行数据的 EOL 字符是什么,我想相应地处理该文件中的数据(我正在使用 Bulk Load 在 SQL Server 上创建表,需要将 EOL 传递给批量加载命令)。据我了解, Readline() 会自动处理 EOL,因此我无法解析 EOL 字符的 Readline() 字符串。下面的代码给出了我正在尝试做的一个例子:
int EOLChar_CRLF = 0;
int EOLChar_LF = 0;
int EOLChar_CR = 0;
int EOLChar_Hex = 0;
string eol_line = file2.ReadLine();
MessageBox.Show(eol_line);
EOLChar_CRLF = eol_line.IndexOf("\\r\\\n");
EOLChar_LF = eol_line.IndexOf("\\n");
EOLChar_CR = eol_line.IndexOf("\\r");
EOLChar_Hex = eol_line.IndexOf("\\0x0a");
MessageBox.Show("CRLF is line feed if " + EOLChar_CRLF.ToString() + " <> -1");
MessageBox.Show("LF is line feed if " + EOLChar_LF.ToString() + " <> -1");
MessageBox.Show("CR is line feed if " + EOLChar_CR.ToString() + " <> -1");
MessageBox.Show("0x0a is line feed if " + EOLChar_Hex.ToString() + " <> -1");
有人知道使用 StreamReader.ReadLine() 方法或任何其他方法来确定 EOL 的方法吗?我只想读取第一行数据并为 EOL 解析它,因为其中一些文件是 20+ 百万行。
【问题讨论】:
-
如果不知道行终止符是什么,如何确定第一个“行”?对我来说,这听起来像是先有鸡还是先有蛋的问题。
-
为什么你想知道(或)关心行分隔符是什么?它将是
\r或\n或both(根据 MSDN)。ReadLine()方法会解决这个问题。 -
ReadLine() 自动处理终止符,这意味着无需确定 ReadLine 的 EOL 字符即可运行并提供第一行。我需要 ReadLine() 不显示的 EOL 字符,因为我必须将它作为参数传递到我的批量插入语句中。
-
您的另一个选择是逐个字符地阅读,查找您预定义为 eol 类型的内容。