c# - 从内存中读取文件的第一行

标签 c# file text

我有一个制表符分隔的文本文件,我需要将其上传到一个安全文件夹,以便 SSIS 将其导入到 SQL Server 中。该文件将由外部用户通过网络应用上传。

我的挑战是,在允许将其放入安全文件夹之前,我需要检查该文件的某些内容。也就是说,我需要确保用户有一个特定的列。

如果我将文件保存到网络应用程序中的文件夹中,我就可以执行此操作。然而,文件中数据的性质决定了我们不希望将此文件放在安全文件夹以外的任何地方。我也无法将它直接放在这个文件夹中,因为 SSIS 包设置为在文件出现在那里时立即触发。

我需要做的是找到一种方法(如果有的话)解析内存中的文件,如果通过所有检查,则将其上传到安全文件夹。

我正在使用 C#.NET 和 FileUpload 控件。

到目前为止,我的搜索包括了各种信息,但它们都需要先将文件保存在某个地方,然后再使用它。

非常感谢您的宝贵时间。如果有人能指出我可以查看的对象或代码,我将不胜感激。

最佳答案

不是调用SaveAs,而是使用FileContent 属性以Stream 的形式访问文件的内容,然后您可以进行任何处理在手动保存之前是必需的。

例如,像这样:

string data;

using(StreamReader reader = new StreamReader(fileUpload.FileContent))
{
    data = reader.ReadToEnd();
}

data 变量现在包含文件的字符串形式的内容。您可以进行任何您喜欢的处理,然后将其保存(或不保存)到适当的位置。

关于c# - 从内存中读取文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558513/

相关文章:

java - 使用随机文件访问拆分文件不起作用

java - 如何从依赖的 jar 中找到本地资源?

python - 如何在 matplotlib 图形文本中使用(新样式)字符串格式

c# - 使用正则表达式查找函数的最佳方法?

c# - 如何强制所有程序线程在程序关闭时退出?

c# - Nhibernate QueryOver - 获取分页的子计数

c# - 从我的 .NET Windows 应用程序发出的电子邮件(通过 SendGrid)中的字体未设置为 Arial

C# 2Gb 文件在 Ram 中是 4gb。为什么?

java - 求引用解析器

java - 替换文本边界内的表达式