C# 在C语言中,字符串的结尾有一个换行符(没有任何原因)#
我目前正在.NET中编写一个应用程序,它从一个文件中读取数据——在该文件中,有一个指向另一个写入文件的路径。然后应用程序打印该文件的内容。 这是一个例子: 文件1:C# 在C语言中,字符串的结尾有一个换行符(没有任何原因)#,c#,C#,我目前正在.NET中编写一个应用程序,它从一个文件中读取数据——在该文件中,有一个指向另一个写入文件的路径。然后应用程序打印该文件的内容。 这是一个例子: 文件1: D:\Path\To\My\File.txt SOME OTHER STUFF 文件2: Hello, world! 当我运行应用程序时,它抛出一个错误,指出路径的语法无效。我尝试查看它从文件1中获取的实际字符串,因此我执行了以下操作: string testString = File.ReadAllText(file); /
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()
以避免读取的内容超过第一行。@juharrReadAllLines
读取数组,绕过此优势<如果这是一个问题,代码>读行无疑是前进的方向。@ClickRick如果你的优势是不阅读整个文件,那么这正是我想要的。虽然这个文件似乎只有1或2行,但我认为这并不重要。@juharr在我的示例中,我只写了1行(这样你就不会感到困惑,认为其他行应该包含在字符串中),但这个文件实际上有多行。呃,不,这是错误的!