我在Microsoft Visual C#2010 Express中编程。 我的Web服务器上的文件夹中有一个文本文件,其中包含一个字符:'0'。 当我启动我的C#应用程序时,我想从我的文本文件中读取数字,将其增加1,然后保存新数字。
我浏览了网页,但找不到一个好的答案。我得到的只是关于从本地文本文件写/读的问题和答案。
所以基本上,我想把一些文字写到一个文本文件中,这个文件不在我的电脑上但在这里: http://mywebsite.xxx/something/something/myfile.txt
这可能吗?
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
我找到了一个有效的解决方案,使用文件传输协议作为BartaTamá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。如果您的服务器上有重要文件,我的解决方案不建议。