ReadLines文本文件以breakmode / error结尾

时间:2019-03-22 00:47:40

标签: c#

我正在阅读一个文本文件,其中包含有关文件名,文件路径,文件大小和修改日期的信息。

我能够选择所有必需的数据并将其成功存储在数据表中,然后使用Stored Procedure将其存储到SQL Server中。但是,在某个点(或某行),我选择的是Filesizeize-Entry,它的字符串类似于(333,461)而不是333,461,以将该值存储到SQL Server中,我需要将其转换为float并将此值除以1000(以千字节为单位的字节)。我当前的(缩短的)代码是:

var Txtfile = File.ReadLines(@"C:\Users\[Path to my File]")
            .Where(s => (s.StartsWith("20") && s.Split(new char[] { ' ' }, 5, StringSplitOptions.RemoveEmptyEntries)[2] != "<DIR>")
            || Regex.Match(s, @"^\s.{1}:.*").Success);

变量Txtfile现在是一个字符串数组,第3个条目是“文件大小”。然后,我使用以下命令编辑该值:

 (float)(Math.Truncate((Convert.ToDouble(Txtfile[2]) / 1000F)))

直到我遇到括号“(somevalue)”中的值为止,此方法一直有效。

所以我尝试了Txtfile[2] = Txtfile[2].Replace("(", "").Replace(")", "");

运行代码后,我的应用程序进入中断模式,将不会执行任何操作,继续执行我的应用程序将不会有任何结果。 有人知道该怎么做吗?

引发异常:托管调试助手“ ContextSwitchDeadlock” 启用它并不能解决问题。

然后我将得到以下异常:

  

System.Data.SqlClient.SqlException:'字符串或二进制数据将被截断。   表值参数“ @MyTableType”的数据不符合该参数的表类型。 SQL Server错误为:8152,状态:10

那意味着我不能将已编辑(删除的'('和')')字符串转换为float?

0 个答案:

没有答案