teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

誤字修正しました。

2016/09/28 04:50

投稿

ky_46
ky_46

スコア92

title CHANGED
File without changes
body CHANGED
@@ -135,7 +135,7 @@
135
135
  ```
136
136
  まず、ファイルの一覧リストを取得し、それを回しながら、サイズと日付を取得できました。
137
137
  ただ、この方法だとけっこう時間がかかります。
138
- また、FTP側に必要以上の付加がかかっていないかも心配です。
138
+ また、FTP側に必要以上の負荷がかかっていないかも心配です。
139
139
 
140
140
  FtpWebRequestが複数になっているのは、
141
141
  .Method = System.Net.WebRequestMethods.

1

レスポンス頂いた内容で修正してみました。

2016/09/28 04:50

投稿

ky_46
ky_46

スコア92

title CHANGED
File without changes
body CHANGED
@@ -74,4 +74,69 @@
74
74
 
75
75
  取得出来れば、データベースに登録しておき、見つからないファイル名や、ファイル名でSELECTしたときに、サイズが違ったり、日付が違う(比較で新しい事は確認します)で選び出し、ダウンロードなどを自動で行えるようにしたいと思っています。
76
76
 
77
- よろしくお願いいたします。
77
+ よろしくお願いいたします。
78
+
79
+ 2016/09/28追記
80
+ ```VB.NET
81
+ Sub bu1()
82
+ 'FTPのファイル一覧を取得
83
+ Dim u As New Uri("ftp://" & Form1.TextBox3.Text & "/hogehoge/")
84
+
85
+ 'FtpWebRequestの作成
86
+ ftpReq = CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest)
87
+
88
+ 'ログインユーザー名とパスワードを設定
89
+ ftpReq.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
90
+
91
+ 'MethodにWebRequestMethods.Ftp.ListDirectoryDetails("NLIST")を設定
92
+ ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectory
93
+ '要求の完了後に接続を閉じない
94
+ ftpReq.KeepAlive = True
95
+ 'PASSIVEモードを無効にする
96
+ ftpReq.UsePassive = False
97
+ ''ASCIIモード
98
+ ftpReq.UseBinary = False
99
+
100
+ 'FtpWebResponseを取得
101
+ Dim ftpRes As System.Net.FtpWebResponse =
102
+ CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
103
+ 'FTPサーバーから送信されたデータを取得
104
+ Dim sr As New System.IO.StreamReader(ftpRes.GetResponseStream(), System.Text.Encoding.Default)
105
+
106
+
107
+
108
+ While (sr.Peek() >= 0)
109
+ 'ファイルサイズ
110
+ Dim u2 As New Uri("ftp://" & Form1.TextBox3.Text & "/hogehoge/" & sr.ReadLine())
111
+
112
+ Dim ftpReq2 As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(u2), System.Net.FtpWebRequest)
113
+ ftpReq2.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
114
+ ftpReq2.Method = System.Net.WebRequestMethods.Ftp.GetFileSize
115
+
116
+ Dim ftpRes2 As System.Net.FtpWebResponse = CType(ftpReq2.GetResponse(), System.Net.FtpWebResponse)
117
+ Console.WriteLine(ftpRes2.ContentLength)
118
+
119
+ ftpRes2.Close()
120
+
121
+ '更新日時
122
+ Dim ftpReq3 As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(u2), System.Net.FtpWebRequest)
123
+ ftpReq3.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
124
+ ftpReq3.Method = System.Net.WebRequestMethods.Ftp.GetDateTimestamp
125
+
126
+ Dim ftpRes3 As System.Net.FtpWebResponse = CType(ftpReq3.GetResponse(), System.Net.FtpWebResponse)
127
+ Console.WriteLine(ftpRes3.LastModified)
128
+
129
+ ftpRes3.Close()
130
+ End While
131
+ sr.Close()
132
+
133
+ '閉じる
134
+ ftpRes.Close()
135
+ ```
136
+ まず、ファイルの一覧リストを取得し、それを回しながら、サイズと日付を取得できました。
137
+ ただ、この方法だとけっこう時間がかかります。
138
+ また、FTP側に必要以上の付加がかかっていないかも心配です。
139
+
140
+ FtpWebRequestが複数になっているのは、
141
+ .Method = System.Net.WebRequestMethods.
142
+ で何か設定すると(例:ファイル一覧の.Ftp.ListDirectory)、別のメソッドを再設定できないためです。