从文本文件中读取

时间:2011-11-10 17:32:18

标签: c# asp.net tsql

我正在使用SQL语句从C#中的文本文件中读取。这就是我正在使用的:

var strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + importFolder + ";Extended Properties=\"text;HDR=No;IMEX=1;FMT=Delimited\"";
var conn = new System.Data.OleDb.OleDbConnection(strconn);
var da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [" + file + "]", conn);

这样可以正常工作,但它包含文件底部的空白行。是否可以忽略或忽略空行?

谢谢!

更多代码:

var importFolder = Path.GetDirectoryName(savedfile);
var file = Path.GetFileName(savedfile);

var strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + importFolder + ";Extended Properties=\"text;HDR=No;IMEX=1;FMT=Delimited\"";
var conn = new System.Data.OleDb.OleDbConnection(strconn);
var da = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [" + file + "]", conn);
da.Fill(Exceptions);

3 个答案:

答案 0 :(得分:2)

我想我会使用类似的东西从旧文件创建一个新文件(假设文件足够小以适应内存):

var oldLines = File.ReadAllLines(file);
var newLines = oldLines.Where(s => !string.IsNullOrWhitespace(s));
File.WriteAllLines(newFileName, newLines);

编辑:

我总是忘记这种新方法,它绕过了“足够小以适应内存”的要求:

var oldLines = File.ReadLines(file);
var newLines = oldLines.Where(s => !string.IsNullOrWhitespace(s));
File.WriteAllLines(newFileName, newLines);

ReadLines返回IEnumerable<string>;它不会将整个文件读入内存。

答案 1 :(得分:1)

你可以这样做:

new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [" + file + "] where SomeImportantColumn is not null and SomeImportantColumn <> ''", conn);

答案 2 :(得分:0)

file.Trim()
// or
file.Trim('\r', '\n')
// or 
file.TrimEnd('\r', '\n')

所有这些都将删除最后的空行,但在其他方面表现略有不同。