我是C#的新手,我已经完成了一些批处理文件和一些名为Arma 3的游戏,它使用的是SQF和C ++。所以请原谅我的无知,我正在努力学习。
我最近使用GUI而不是控制台应用编写了此代码。用于教育目的。它从我的FTP服务器下载并列出目录内容。但是,当我下载文件时,它表示它已下载,并且它不会显示在我的PC上的任何位置。 FTP服务器连接,甚至说它已正确传输。
如何获得"选择目录"出现的选项?甚至是默认路径?
我尝试了一些事情并且已经挂断了。
using System.Windows;
& "Path"
创建错误" using System.Windows;
using System.Net;
using System.IO;
namespace Downloader
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void DLBTN_Click(object sender, RoutedEventArgs e)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://xxx.xxx.xxx.xxx/test.txt");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("test", "test123");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
MessageBox.Show("Download Complete", response.StatusDescription);
}
private void CNTBTN_Click(object sender, RoutedEventArgs e)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://xxx.xxx.xxx.xxx/");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential("test", "test123");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
MessageBox.Show(reader.ReadToEnd());
}
}
}
含糊不清"
{{1}}
答案 0 :(得分:2)
你实际上并没有做任何事情。你得到了响应对象,但你永远不会调用response.GetResponseStream()来实际获取流,也不会打开要写入的文件。
你需要这样的东西(只是写下我的头顶,还没有测试过):
using (FileStream outStream = new FileStream(@"C:\outputfile.txt")) // or whatever
using (Stream inStream = response.GetResponseStream())
{
inStream.CopyTo(outStream); // Could also await instream.CopyToAsync() instead
}
如果要提示输入保存路径,则应查看SaveFileDialog类。