在C#中通过FTP编辑文本文件?
基本上,我想使用以下代码编辑C#文件: 但它不起作用,我该怎么做 通过FTP编辑文件是:在C#中通过FTP编辑文本文件?,c#,ftp,streamreader,streamwriter,C#,Ftp,Streamreader,Streamwriter,基本上,我想使用以下代码编辑C#文件: 但它不起作用,我该怎么做 通过FTP编辑文件是: 下载文件 本地编辑文件(内存中) 上传文件 对于步骤1和3,请检查。检查.NET 4.0中包含的类以帮助完成此操作。与ftplib库相比,FtpWebRequest似乎非常复杂@ 这是他们的例子 using (FtpConnection ftp = new FtpConnection("ftpserver", "username", "password")) { ftp.Open();
对于步骤1和3,请检查。检查.NET 4.0中包含的类以帮助完成此操作。与ftplib库相比,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);
}
正如我看到的,我有点晚了,但我和你一样面临着同样的问题。在我寻找解决方案后,我找到了一种不用下载和上传文件就能完成更改的方法 我的目标是在结束时保存程序执行期间所做的所有更改,并在程序开始时从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;
}
我认为您需要查找FTP协议,这比像本地文件一样打开和关闭要多得多。你可以制作一个库,让它变得如此简单,但它不是天生的。不工作是一个问题描述,通常被那些不知道/不关心计算机如何工作的人使用,对于软件开发人员来说是完全不合适的。软件开发人员(特别是那些询问StackOverflow问题的人)通常会表达他们想要实现什么、预期结果、他们为了实现它而尝试了什么、获得的结果以及与预期结果的不同之处。那么当你运行这段代码时会发生什么呢?你有例外吗?BSOD?你的电脑死机了?苹果开始从天上掉下来?@Darin Dimitrov我真的认为“不起作用”是一个问题描述,不知道/不关心可能想要帮助解决问题的人经常使用它。Thnx!我最终使用了:var x=newWebClient();x、 BaseAddress=“”;x、 下载文件(x.BaseAddress,“wazadoin.txt”);var xyz=新的StreamReader(“wazadoin.txt”);label1.Text=xyz.ReadLine()@IMAPC这基本上是相同的步骤,只是另一个类。您甚至可以在第2步shell一个编辑器,并添加一个FileSystemWatcher来监视用户何时实际保存文件并自动推送服务器(或者可以选择询问用户)。
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;
}