Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中,字符串的结尾有一个换行符(没有任何原因)#_C# - Fatal编程技术网

C# 在C语言中,字符串的结尾有一个换行符(没有任何原因)#

C# 在C语言中,字符串的结尾有一个换行符(没有任何原因)#,c#,C#,我目前正在.NET中编写一个应用程序,它从一个文件中读取数据——在该文件中,有一个指向另一个写入文件的路径。然后应用程序打印该文件的内容。 这是一个例子: 文件1: D:\Path\To\My\File.txt SOME OTHER STUFF 文件2: Hello, world! 当我运行应用程序时,它抛出一个错误,指出路径的语法无效。我尝试查看它从文件1中获取的实际字符串,因此我执行了以下操作: string testString = File.ReadAllText(file); /

我目前正在.NET中编写一个应用程序,它从一个文件中读取数据——在该文件中,有一个指向另一个写入文件的路径。然后应用程序打印该文件的内容。 这是一个例子:

文件1:

D:\Path\To\My\File.txt

SOME OTHER STUFF
文件2:

Hello, world!
当我运行应用程序时,它抛出一个错误,指出路径的语法无效。我尝试查看它从文件1中获取的实际字符串,因此我执行了以下操作:

string testString = File.ReadAllText(file); // file is a variable that's already created, which is just a string with the path of File 1.
File.WriteAllText("test.txt", $"'{testString}'");
我查看了新创建的
test.txt
,看到了这一点

'D:\Path\To\My\File.txt
'
为什么在第二个报价前有换行符?我试着用谷歌搜索,但没有成功。请帮帮我,我是C#的新手

编辑1: 我尝试使用
File.ReadAllBytes()
,但结果是一样的

这就是结果:

'D:\Georges\Desktop\G\test2.g
'
这是我的代码:

byte[] testString = File.ReadAllBytes(file);
File.WriteAllBytes("test.txt", testString);
编辑2: 当我从文件中删除除一行以外的所有内容时,它起作用了。这很好,但我确实希望能够在文件中添加更多行,而不会使其不工作。

也许您应该使用而不是
文件。ReadAllText
。大概是这样的:

string testString = File.ReadLines(file).ToList()[0]; // file is a variable that's already created, which is just a string with the path of File 1.
File.WriteAllText("test.txt", $"'{testString}'");

请记住文本文件中的路径,当它是path/url时,您应该在使用“/”之前放置另一个“/”

在这种情况下,您应该将路径放在文本文件中,如下所示: D:\\Georges\\Desktop\\G\\test2.G


它连接到字符串中的特殊字符。

您没有显示代码,因此我不能确定这是您的问题,但根据经验,它看起来是
您的文件名末尾可能有一个看不见的字符,因此当您将文件名复制粘贴到文本文件中时,您也会使用该特殊字符复制它

由于一些特殊字符是看不见的,这里发生的违反直觉的事情是,您不希望您看起来像“test2.g”的文件名实际包含“test2.g”+chr(13)-其中char-13是换行符。

文件1中没有换行符?你查过了吗?是的,我查过了。@zenof当你使用
File.ReadAllBytes()
并输出单个字节时,你得到的输出是什么?请将您的问题包括在
文件中使用的代码。ReadAllBytes()
以及读取文件时获得的字节值。文本文件以新行结尾以及某些编辑器不实际显示它是很常见的。那么,您是如何检查它是否以换行符结尾的呢?请尝试将文件加载到十六进制编辑器中,或者只执行
ReadAllLines(file)[0]
,或
ReadLines(file).First()
以避免读取的内容超过第一行。@juharr
ReadAllLines
读取数组,绕过此优势<如果这是一个问题,代码>读行无疑是前进的方向。@ClickRick如果你的优势是不阅读整个文件,那么这正是我想要的。虽然这个文件似乎只有1或2行,但我认为这并不重要。@juharr在我的示例中,我只写了1行(这样你就不会感到困惑,认为其他行应该包含在字符串中),但这个文件实际上有多行。呃,不,这是错误的!