質問編集履歴

2

誤字修正しました。

2016/09/28 04:50

投稿

ky_46
ky_46

score92

test CHANGED
File without changes
test CHANGED
@@ -272,7 +272,7 @@
272
272
 
273
273
  ただ、この方法だとけっこう時間がかかります。
274
274
 
275
- また、FTP側に必要以上の付加がかかっていないかも心配です。
275
+ また、FTP側に必要以上の負荷がかかっていないかも心配です。
276
276
 
277
277
 
278
278
 

1

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

2016/09/28 04:50

投稿

ky_46
ky_46

score92

test CHANGED
File without changes
test CHANGED
@@ -151,3 +151,133 @@
151
151
 
152
152
 
153
153
  よろしくお願いいたします。
154
+
155
+
156
+
157
+ 2016/09/28追記
158
+
159
+ ```VB.NET
160
+
161
+ Sub bu1()
162
+
163
+ 'FTPのファイル一覧を取得
164
+
165
+ Dim u As New Uri("ftp://" & Form1.TextBox3.Text & "/hogehoge/")
166
+
167
+
168
+
169
+ 'FtpWebRequestの作成
170
+
171
+ ftpReq = CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest)
172
+
173
+
174
+
175
+ 'ログインユーザー名とパスワードを設定
176
+
177
+ ftpReq.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
178
+
179
+
180
+
181
+ 'MethodにWebRequestMethods.Ftp.ListDirectoryDetails("NLIST")を設定
182
+
183
+ ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectory
184
+
185
+ '要求の完了後に接続を閉じない
186
+
187
+ ftpReq.KeepAlive = True
188
+
189
+ 'PASSIVEモードを無効にする
190
+
191
+ ftpReq.UsePassive = False
192
+
193
+ ''ASCIIモード
194
+
195
+ ftpReq.UseBinary = False
196
+
197
+
198
+
199
+ 'FtpWebResponseを取得
200
+
201
+ Dim ftpRes As System.Net.FtpWebResponse =
202
+
203
+ CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
204
+
205
+ 'FTPサーバーから送信されたデータを取得
206
+
207
+ Dim sr As New System.IO.StreamReader(ftpRes.GetResponseStream(), System.Text.Encoding.Default)
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+ While (sr.Peek() >= 0)
216
+
217
+ 'ファイルサイズ
218
+
219
+ Dim u2 As New Uri("ftp://" & Form1.TextBox3.Text & "/hogehoge/" & sr.ReadLine())
220
+
221
+
222
+
223
+ Dim ftpReq2 As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(u2), System.Net.FtpWebRequest)
224
+
225
+ ftpReq2.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
226
+
227
+ ftpReq2.Method = System.Net.WebRequestMethods.Ftp.GetFileSize
228
+
229
+
230
+
231
+ Dim ftpRes2 As System.Net.FtpWebResponse = CType(ftpReq2.GetResponse(), System.Net.FtpWebResponse)
232
+
233
+ Console.WriteLine(ftpRes2.ContentLength)
234
+
235
+
236
+
237
+ ftpRes2.Close()
238
+
239
+
240
+
241
+ '更新日時
242
+
243
+ Dim ftpReq3 As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(u2), System.Net.FtpWebRequest)
244
+
245
+ ftpReq3.Credentials = New System.Net.NetworkCredential(Form1.TextBox1.Text, Form1.TextBox2.Text)
246
+
247
+ ftpReq3.Method = System.Net.WebRequestMethods.Ftp.GetDateTimestamp
248
+
249
+
250
+
251
+ Dim ftpRes3 As System.Net.FtpWebResponse = CType(ftpReq3.GetResponse(), System.Net.FtpWebResponse)
252
+
253
+ Console.WriteLine(ftpRes3.LastModified)
254
+
255
+
256
+
257
+ ftpRes3.Close()
258
+
259
+ End While
260
+
261
+ sr.Close()
262
+
263
+
264
+
265
+ '閉じる
266
+
267
+ ftpRes.Close()
268
+
269
+ ```
270
+
271
+ まず、ファイルの一覧リストを取得し、それを回しながら、サイズと日付を取得できました。
272
+
273
+ ただ、この方法だとけっこう時間がかかります。
274
+
275
+ また、FTP側に必要以上の付加がかかっていないかも心配です。
276
+
277
+
278
+
279
+ FtpWebRequestが複数になっているのは、
280
+
281
+ .Method = System.Net.WebRequestMethods.
282
+
283
+ で何か設定すると(例:ファイル一覧の.Ftp.ListDirectory)、別のメソッドを再設定できないためです。