从文本文件中读取会创建三个点

时间:2016-01-24 05:35:58

标签: c# .net string

我正在使用StreamReader读取包含sql查询的长文本文件,然后使用StringBuilder创建一个针对数据库运行的字符串。一旦创建了字符串,我检查了值和三个点......出现在字符串中,导致查询失败,当我对数据库运行它时。为什么会这样?我该怎么做才能防止它发生?

string script;
if (File.Exists(path))
{

    using(StreamReader sr = File.OpenText(path))
    {
        StringBuilder sb = new StringBuilder();
        while(!sr.EndOfStream)
        {
            sb.Append(sr.ReadLine());

        }
        script = sb.ToString();
    }
}

更新:我应该补充一点,每次都会在角色位置16384出现三个点。不确定这个

的重要性

UPDATE :似乎字符串在运行时被截断。该文件包含48080个字符,但在位置16384处被截断,使字符串变量32768。这是字符串的最大字符数吗?

3 个答案:

答案 0 :(得分:2)

我在调试很长的查询字符串时遇到了同样的问题。

事实证明,Visual Studio(我的是2015年)调试器将在一定数量的字符后截断长字符串以便于阅读。因此,即使您在Text Visualizer中看到三个点(...),实际值也不会有三个点。

据我所知,visual studio 2012调试器不会添加三个点。我还没有找到如何在VS2015中关闭该功能的方法,但你可以使用html visualizer或json visualizer作为替代解决方案。

Use html visualizer or json visualizer like this

答案 1 :(得分:2)

我有一个明确的答案:微软表示你所遇到的是Visual Studio 2015中的一个错误。他们已经发布了Visual Studio 2015的“更新2”,据报道它可以纠正这个问题。

我正在尝试通过我的管理员安装此更新,但与此同时,一个可行的解决方法是在JSON Visualizer中加载文本。它会显示一个错误,当然,它不是有效的JSON,因为它是SQL,但它会显示字符串的整个文本。

从这里下载更新2:

https://www.visualstudio.com/en-us/news/vs2015-update2-vs.aspx

请在此处查看错误报告:

https://connect.microsoft.com/VisualStudio/feedback/details/2016177/text-visualizer-misses-corrupts-text-in-long-strings

答案 2 :(得分:0)

我感觉您正在检查调试器中的值,其中长查询文本被部分显示,并以省略号结束(...)

再次在这里猜测,但似乎你将SQL行连接成一行,如果文件中的行不以空白字符结尾,那么查询就会搞砸了。可能这就是你的SQL查询不起作用的原因。

顺便说一句,您可以更简洁地编写代码,如下所示

if (File.Exists(path))
    script = string.Join(" ", File.ReadLines(path));