首页 > 解决方案 > ReadLines 文本文件以中断模式/错误结尾

问题描述

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

我能够选择所有必要的数据并将它们成功存储在数据表中,然后我将其存储到我的 SQL Server 中Stored Procedure。但是,在某个点(或行),我选择了 Filesize-Entry 字符串,(333,461)而不是333,461,为了将此值存储到我的 SQL Server 我需要将其转换为浮点数并将此值除以 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现在是一个字符串数组,其中第三个条目是文件大小。然后我编辑这个值:

 (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

这意味着我无法将已编辑(删除'('和')')字符串转换为浮动?

标签: c#

解决方案


推荐阅读