[英]Edit a text file over FTP in C#?
基本上,我想使用以下代碼編輯C#文件:
var file = new StreamReader("ftp://xxx.xxx.x.x/xxx.txt"); //[ip address/file]
label1.Text = file.ReadLine();
file.Close();
var fw = new StreamWriter("ftp://xxx.xxx.x.x/xxx.txt"); //[ip address/file]
fw.WriteLine(textBox1.Text);
fw.Close();
但它不起作用,我該怎么做?
與ftplib庫@ http://ftplib.codeplex.com/相比,FtpWebRequest看起來非常復雜
這是他們的榜樣......
using (FtpConnection ftp = new FtpConnection("ftpserver", "username", "password"))
{
ftp.Open(); /* Open the FTP connection */
ftp.Login(); /* Login using previously provided credentials */
if (ftp.DirectoryExists("/incoming")) /* check that a directory exists */
ftp.SetCurrentDirectory("/incoming"); /* change current directory */
if (ftp.FileExists("/incoming/file.txt")) /* check that a file exists */
ftp.GetFile("/incoming/file.txt", false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */
//do some processing
try
{
ftp.SetCurrentDirectory("/outgoing");
ftp.PutFile(@"c:\localfile.txt", "file.txt"); /* upload c:\localfile.txt to the current ftp directory as file.txt */
}
catch (FtpException e)
{
Console.WriteLine(String.Format("FTP Error: {0} {1}", e.ErrorCode, e.Message));
}
foreach(var dir in ftp.GetDirectories("/incoming/processed"))
{
Console.WriteLine(dir.Name);
Console.WriteLine(dir.CreationTime);
foreach (var file in dir.GetFiles())
{
Console.WriteLine(file.Name);
Console.WriteLine(file.LastAccessTime);
}
查看.NET 4.0中包含的FtpWebRequest類來幫助解決這個問題。
我覺得我遲到了,但是我遇到了和你一樣的問題,在我尋找解決方案之后,我找到了一種方法來進行更改而無需下載和上傳文件。
我的目標是保存程序執行期間所做的所有更改,並在程序啟動時從存儲在FTP服務器中的.txt文件加載這些數據。
這是使用的兩種方法:
public static void Save(ArrayList dataStore)
{
WebClient request = new WebClient();
string url = "ftp://ftpname/directory/" + "file.txt";
request.Credentials = new NetworkCredential("username", "password");
Stream postStream = request.OpenWrite(url);
foreach (Data data in dataStore)
{
byte[] writeData = Encoding.ASCII.GetBytes(data + "#");
postStream.Write(writeData, 0, writeData.Length);
}
}
public static ArrayList Load()
{
ArrayList dataStore = new ArrayList();
WebClient request = new WebClient();
string url = "ftp://ftpname/directory/" + "file.txt";
request.Credentials = new NetworkCredential("username", "password");
byte[] newFileData = request.DownloadData(url);
string fileString = Encoding.UTF8.GetString(newFileData);
if (fileString == "")
{
return dataStore;
}
string[] dataString = fileString.Split('#');
foreach (string data in dataString)
{
if (data != "")
{
dataStore.Add(data);
}
}
return dataStore;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.