写入web文本文件

本文关键字:文件 文本 web 写入 | 更新日期: 2023-09-27 18:19:56

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

我浏览过网络,但找不到一个好的答案。我从本地文本文件中得到的只是关于写作/阅读的问题和答案。

所以基本上,我想把一些文本写到一个文本文件中,这个文件不在我的电脑上,但在这里:http://mywebsite.xxx/something/something/myfile.txt

这可能吗?

写入web文本文件

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

    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);
        }
    }

我找到了一个可行的解决方案,使用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,如何做得更好。如果您的服务器上有重要文件,则不建议使用我的解决方案。