0

私はFtpWebRequestftpからファイルをダウンロードするために使用しています。ただし、アプリがFileStreamファイルを書き出すと宣言した行に移動すると。

以下は私のダウンロード機能です:

public void Download(List <string> path)
        {
            try
            {
                string timenow = DateTime.Today.Year.ToString() + "_" + DateTime.Today.Month.ToString() + "_" + DateTime.Today.Day.ToString() + "_" + DateTime.Today.Hour.ToString() + "_" + DateTime.Today.Minute.ToString() + "_" + DateTime.Today.Second.ToString();
                DirectoryInfo dir = new DirectoryInfo(@"C:\StudySystemFile\" + timenow);
                if (!dir.Exists)
                    dir.Create();

                foreach (string p in path)
                {
                    FtpWebRequest request;
                    request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftp.Hostname + p));
                    request.Credentials = new System.Net.NetworkCredential(ftp.FtpAccount, ftp.FtpPassword);
                    request.Method = WebRequestMethods.Ftp.DownloadFile;
                    request.KeepAlive = false;
                    request.UseBinary = true;
                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                    Stream reader = response.GetResponseStream();
                    FileStream file = new FileStream(@"C:\StudySystemFile\" + timenow, FileMode.Create, FileAccess.ReadWrite);

                    byte[] buffer = new byte[1024];
                    int bytesRead = reader.Read(buffer, 0, buffer.Length);

                    while (bytesRead > 0)
                    {
                        file.Write(buffer, 0, bytesRead);
                        bytesRead = reader.Read(buffer, 0, buffer.Length);
                    }

                    reader.Close();
                    file.Close();
                    response.Close();
                    Console.WriteLine(p);
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }
4

4 に答える 4

0

プログラムを実行しているユーザーには、フォルダーが存在することを確認してファイルを作成する権限がなく、C:\StudySystemFile\プログラムを実行しているユーザーは、UACプロンプトなしでファイルを作成できます。

おそらく、ファイルの書き込み権限を持たないCreate()権限を継承してフォルダを作成すると、フォルダの作成権限のみが取得されます。C:\

プログラムの外部でフォルダーを作成するか、呼び出し時に権限Create()を設定する必要があります。

于 2013-06-19T18:39:14.283 に答える