0

我正在使用 Microsoft Visual C# 2010 Express 进行编程。我的网络服务器上的文件夹中有一个文本文件,其中包含一个字符:'0'。当我启动我的 C# 应用程序时,我想从我的文本文件中读取数字,将其增加 1,然后保存新数字。

我浏览了网络,但找不到好的答案。我得到的只是关于从本地文本文件写入/读取的问题和答案。

所以基本上,我想将一些文本写入不在我的计算机上但在这里的文本文件:http: //mywebsite.xxx/something/something/myfile.txt

这可能吗?

4

2 回答 2

3

您可能需要调整路径目录,但这有效:

    string path = Path.GetDirectoryName(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) + "\\something\\myfile.txt";
    string previousNumber = System.IO.File.ReadAllText(path);
    int newNumber;
    if (int.TryParse(previousNumber, out newNumber))
    {
        newNumber++;
        using (FileStream fs = File.Create(path, 1024))
        {
            Byte[] info = new UTF8Encoding(true).GetBytes(newNumber.ToString());
            fs.Write(info, 0, info.Length);
        }
    }
于 2013-06-26T17:38:00.210 回答
0

我找到了一个可行的解决方案,使用 Barta Tamás 提到的文件传输协议。但是,我从 Michael Todd 那里了解到这并不安全,所以我不会在自己的应用程序中使用它,但也许它可以对其他人有所帮助。

我在这里找到了有关使用 FTP 上传文件的信息:http: //msdn.microsoft.com/en-us/library/ms229715.aspx

    void CheckNumberOfUses()
    {
        // Get the objects used to communicate with the server.
        FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://mywebsite.xx/public_html/something1/something2/myfile.txt");
        HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://mywebsite.xx/something1/something2/myfile.txt");

        StringBuilder sb = new StringBuilder();
        byte[] buf = new byte[8192];
        HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse();
        Stream resStream = response.GetResponseStream();
        string tempString = null;
        int count = resStream.Read(buf, 0, buf.Length);
        if (count != 0)
        {
            tempString = Encoding.ASCII.GetString(buf, 0, count);
            int numberOfUses = int.Parse(tempString) + 1;
            sb.Append(numberOfUses);
        }

        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;

        // This example assumes the FTP site uses anonymous logon.
        ftpRequest.Credentials = new NetworkCredential("login", "password");

        // Copy the contents of the file to the request stream.
        byte[] fileContents = Encoding.UTF8.GetBytes(sb.ToString());
        ftpRequest.ContentLength = fileContents.Length;
        Stream requestStream = ftpRequest.GetRequestStream();
        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();
        FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
        ftpResponse.Close();
    }    

阅读问题的评论,如何更好地做到这一点,而不是使用 FTP。如果您的服务器上有重要文件,则不建议使用我的解决方案。

于 2013-06-27T11:50:49.240 回答