在Web服务器上检索.txt文件的内容而不会打扰它?

时间:2016-02-27 03:15:39

标签: c#

所以我有一个c#应用程序需要在我的Web服务器上托管的文本文件中使用一些代码(路径:https://example.com/example.txt)。

文本文件的内容包含一些已编译的代码,下面是已编译代码的片段:

 *ü
 *²0      ¾6-   +*
 +
 *²0      ¾6-   +S
 +;
 *²0      ¾6-   +y
 +`
 *²0      ¾6-   +Ÿ
 +‡
 *²0      ¾6-   +È
 +°
 *²0      ¾6-
 C
 *s0      µ6--.      y     +ð
 +Ù
*s0    ¾6-
    +ð
 +þ
 *s0      ¾6-
 ,   +ð
 ,
 *s0      ¾6-
 ¶   +ð
 ,
 *s0      ¾6-
 û   +ð
 , 
 *s0      ¾6-

   +ð
 ,/
 *s0      ¾6-
 C
 *W0      µ6-
 ,W   ,G
 ,>

在我的c#应用程序中,我尝试了多种方法从Web服务器上的文本文件中检索内容,这种方式不会弄乱编译的代码结构,例如:

string RetrieveText;
WebClient con = new WebClient();
RetrieveText = con.DownloadString("https://example.com/example.txt");
MessageBox.Show(RetrieveText);

问题在于,当我的c#应用程序被执行并且MessageBox.Show()弹出时,编译后的代码会变得有点“无组织”。并且我的Web服务器上的文本文件中的一些编译代码行随机地删除换行符和空格,例如当在{{上面显示的c#示例中使用DownloadString()检索上面显示的编译代码时1}}输出:

上面显示的相同代码片段,但在我使用c#检索我的网络服务器上托管的文本文件的内容后使用MessageBox

DownloadString()

正如您所看到的,已编译的代码已从其原始布局/结构更改,所以基本上我的问题是,有没有办法从使用c#在Web服务器上托管的文本文件中检索内容?如果是这样,我怎样才能检索文本文件的内容,但不会干扰我的Web服务器上托管的文本文件中编译代码的布局/结构?

我需要能够在我的c#应用程序中使用web服务器上的文本文件的内容,如下所示:

 *ü
 *²0      ¾6-   +* +
 *²0      ¾6-   +S   +;  *²0      ¾6-   +y
 +`  *²0      ¾6-   +Ÿ
 +‡  *²0      ¾6-   +È  +°  *²0      ¾6-
    *s0      µ6--.      y     +ð
 +Ù *s0    ¾6-     +ð
+þ  *s0      ¾6-  ,   +ð
,  *s0      ¾6-   ¶   +  ,   *s0      ¾6- +    ,   *s0      ¾6-
     +   ,/  *s0      ¾6    C
 *W0      µ6    ,W   ,G ,>

希望这个问题有道理:/

2 个答案:

答案 0 :(得分:1)

您应该使用WebClient的DownloadData代替DownloadStringDownloadString必须尝试找出编码并应用它来为您提供字符串。您根本不希望完成转换。

答案 1 :(得分:0)

不要将DownloadString用于编译的字符串。此功能设计仅与普通字符串一起使用。请改用DownloadData

WebClient wc = new WebClient();

// Get binary data
byte[] downloadData = wc.DownloadData("https://example.com/example.txt");

// You can download your server file directly use download manager tools (etc. IDM) save it to "serverfile.bin" and compare it
byte[] orgBytes = File.ReadAllBytes("D:\\serverfile.bin");

// using System.Linq;
bool isTwoFileEqual = downloadData.SequenceEqual(orgBytes);

// The result should be True
Console.WriteLine(isTwoFileEqual);