FTPサーバーからファイル名を取得する方法

このQ&Aのポイント
  • FTPサーバーから受信したファイル一覧からファイル名だけを取得する方法を教えてください。
  • VB.NET+WinXPの環境で、FTPサーバーにログインしてLISTコマンドを使用してファイル一覧を取得しています。ファイル名やフォルダ名だけを取得するにはどうすれば良いでしょうか?
  • FTPサーバーのファイル一覧から、ファイル名やフォルダ名だけを取得する方法を教えてください。リストにはdrwxrwxr-x 2 53 53 4096 Feb 28 2006 abcなどの情報が含まれています。
回答を見る
  • ベストアンサー

FTPサーバーから受信したファイル一覧からファイル名だけを取得したいです

こんばんは。いつもお世話になっております。 VB.NET+WinXPなのですが、 FTPサーバーにログインして、 LISTコマンドでファイル一覧を要求すると 「drwxrwxr-x 2 53 53 4096 Feb 28 2006 abc」 などというファイルやフォルダの一覧がかえって来ると思うのですが、 この中からファイル名やフォルダ名だけを取得するには どうしたらよいでしょうか。 TABやコンマが入っていないので、文字列関数で切り取るにも 区切りがわからないと思うのです。 ローカルドライブのDir関数なら、FileAttribute.Nomalや.Directoryの指定でファイル名だけや ディレクトリー名だけを指定して 取得することが出来るのですが、FTPサーバーの場合からの場合はどういった方法があるでしょうか。 参考程度でも構いませんので教えて頂けるとたすかります。m(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1>ファイル名やディレクトリ名にスペースが使われている場合もあって難しいかなと思うのですが、 全然問題なし♪ 例えば 件のリストの1行はスペースで区切られた9のフィールドと考えられますけど、その場合 $line="-rwxrwxr-x 2 53 53 4096 Feb 28 2006 include space 1.jpg"; @field = split(/\s+/, $line, 9);#フィールド数をしていすると、最後はまとめられる print $field[8];# 9番目のフィールドにスペースがあっても大丈夫

popopompom
質問者

お礼

こんばんは。 ご回答ありがとうございます。 $lineは初めて見る感じなので、すぐにどういうことか理解できませんが、 詳しく調べてみたいと思います。 ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>TABやコンマが入っていないので、文字列関数で切り取るにも区切りがわからないと思うのです。 スペースが入っているみたいなので、切り分けできると思います。 split 関数を使うのが簡単です。

popopompom
質問者

お礼

こんばんは、ご回答ありがとうございます。 GOOに投稿すると自動でつめられてしまうようで 気が付かなかったのですが、実際には -rwxrwxr-x___2_53_______53___________4096_Feb_28__2006 1.jpg (_アンダーバーが実際はスペースです)となっております。 ファイル名やディレクトリ名にスペースが使われている場合もあって難しいかなと思うのですが、 また何かよい方法がありましたら、教えて頂けると助かります。

関連するQ&A

  • FTPで一覧リストを作成し取得(Get)したい

    VBで、FTPサーバに接続し、指定のディレクトリーからいくつかのファイルをダウンロードしています。ダウンロードするファイル数が沢山あり、出来る事なら、そのディレクトリー内のファイル名の一覧リストがほしいのです。DOSコマンドから見るときは、'ls'や'dir'は使えるのですが、一覧の作成ができません。DOSプロンプトからFTPサーバをOPENし、dir > aaa.txt と入力すると自端末のC:\document and Settings\自分のフォルダー配下に、そのaaa.txt は作られるのですが、中身が入ってきません。ファイルの一覧がほしいとき、VBではどのようにコーディングすればいいのでしょうか。教えていただければ本当に助かります。よろしくお願いいたします。

  • Net::FTPを使いファイル一覧のみを取得したい

    Net::FTPを使いファイル一覧のみを取得したい 以前の質問では大変お世話になりました。 「Net::FTPを使いフォルダ一覧を取得」 http://okwave.jp/qa/q5555220.html 今度は、Net::FTPを使いファイル一覧のみを取得したいと思ってます。 (ここから) use Net::FTP; my $ftp = Net::FTP->new("hoge.sav.ne.jpp", Debug => 0 , Passive => "true"); # 接続 $ftp->login("xxxx", "pass"); # ログイン my @dir = $ftp->cwd('/public_html'); my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得 my @dir_names_full = @dir[2..$#dir]; #  自フォルダと親フォルダ("."と"..")を除く。 my @dir_names_short = map { (split)[8] } @dir_names_full; # フォルダ名のみを取得 $ftp->quit; print "$_<br>\n" for @dir_names_full; (ここまで) my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得 の部分の「grep /^d/,」を削除したら、ファイルも一緒に表示させることは出来たのですが 正しく表示されませんでした。 (ここから) drwxrwx--- 2 xxxx xxxxx 48 Sep 3 14:59 Maildir drwx---r-x 2 xxxx xxxxx48 Sep 3 14:59 log -rw-r--r-- 1 xxxxnobody 2932 Oct 21 09:34 ent4.html -rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html -rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html (ここまで) 最終的な結果は (ここから) -rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent1.html -rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent2.html -rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent3.html -rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent4.html -rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html -rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html (ここまで) で表示させたいのです。 検索をしていたら、grepで出来そうなのかと思いやってみましたがうまくいきませんでした。 お手数かけます。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Net::FTPを使いフォルダ一覧を取得したいと思い以下の参考サイトを

    Net::FTPを使いフォルダ一覧を取得したいと思い以下の参考サイトを発見しました。 http://dqn.sakusakutto.jp/2008/06/perl_netftpftp.html 非常に分かりやすく早速スクリプトを使用して作成しましたがこのスクリプトですと「/」ルート直下の一覧で取得されてしまいます。 (ここから) use Net::FTP; my $ftp = Net::FTP->new("hoge.sav.ne.jpp", Debug => 0 , Passive => "true"); # 接続 $ftp->login("xxxx", "pass"); # ログイン my @dir = $ftp->cwd('/public_html'); my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得 my @dir_names_full = @dir[2..$#dir]; #  自フォルダと親フォルダ("."と"..")を除く。 my @dir_names_short = map { (split)[8] } @dir_names_full; # フォルダ名のみを取得 $ftp->quit; (ここまで) $ftp->cwd('/public_html');を追加したのですが、 drwxrwx--- 2 xxxx xxxxx 48 Sep 3 14:59 Maildir drwx---r-x 2 xxxx xxxxx48 Sep 3 14:59 log drwx---r-x 1019 xxxx xxxxx 40584 Dec 28 00:25 public_html となってしまいます。 $ftp->dir;  を $ftp->dir('/public_html'); としてもみましたがうまくいきませんでした。 すみません。ご指導を賜りたく書き込みました。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ftpコマンドで再帰的にフォルダとファイルを見たい

    コマンドプロンプトのftpコマンドを使用して、あるディレクトリ配下にあるフォルダとファイル一覧を再帰的に見たいです。 「コマンド:dir」では、ディレクトリ配下のフォルダ一覧は見れるのですが、フォルダの下にあるファイルまでは見ることができません。 どなたかご教授頂けるとうれしいです。 よろしくお願いします。

  • FTPでファイルの一覧が取得できない

    Webページをアップロードする際、FTPソフト(Next FTP)でサーバーに接続するところまでは成功するのですが、その後「ファイルの一覧を取得しています」というメッセージがでたままいっこうにリストが一覧できません。そのまま放置しておいても同じメッセージのままで停滞しています。 以前はこのようなことはなく、すんなり一覧できていたのですが、ここ2、3日から急にそのような状態になりました。このままではファイルをアップロードできないので困ってしまいます。ちなみに他のFTPソフトや、通信環境でも試してみましたが同じ結果でした。いったい何が原因でしょうか?

  • FTPでファイル一覧が見れない?

    今まで何の支障もなかったのですが Windows98と同時にFTPクライアントソフトを再インストールすると ファイル一覧が見れなくなりました。 DW4を使っていたのでFTPログを覗いたところ「LIST」で止まってました。 FFFTPを使ったところ、同じように「NLST -alL」で止まってしまいました。 telnetでログインしての「ls」は大丈夫なのですが ftpでログインしての「dir」と「ls」は同様に止まります。 他の無料サーバを試してみても、同様の結果でした。 これには、どういう原因が考えられるでしょうか?

  • クラスパス配下のファイル名一覧取得

    ある、クラスパスの通ったフォルダ(仮にdir)があったとして そのフォルダ内にあるファイル名一覧を取得したいと考えております。 dir/ ->a.txt ->b.txt ->c.txt 結果:a.txt、b.txt、c.txt ClassLoader クラスなどを用いて取得しようと考えたのですが、 getSystemResource() メソッドなどはファイル名まで指定しないと 取得できないみたいで、現時点で望む処理ができない状態です。 フォルダまでの絶対パスの指定はしたくないため、 Fileクラスも使用できない状態です。 このような処理をやったことがある方は、 どうかご教授お願いいたします。

  • ファイルの一覧が取得できません

    自宅サーバーにてvsftpdでFTPサーバーを動かしています。動作確認のために友人にアクセスしてもらったのですが、ファイルの一覧を取得できずにフリーズしてしまいました。他のFTPサーバーではファイルの一覧は取得できました。また、私のPCで友人の家からアクセスしたのですが正常に接続することが出来ました。 原因と解決方法をご存知の方がいましたら回答いただけないでしょうか。 よろしくお願いします。

  • ftpクライアントでの接続後の、サーバ側のファイル一覧の取得方法

    c言語で、ftpプロトコルを使用し、ftpサーバまで接続することができたまでは良かったのですが、サーバ側のファイル一覧を取得する方法(フローチャート)が分かりません。 すみませんが、ご教授よろしくお願いいたします。

  • ファイル一覧表(LAN内の別PC)

    PHPのあるサーバ(A)、ファイルサーバ(B) サーバ(B)の特定フォルダに画像ファイルが複数存在します。そちらを一覧表示するページを作成したいと思っています。 現在、ファイル取得を行う過程において、サーバ(B)のディレクトリオープンに失敗している状況です。 ---------------<< 以下ソース >>--------------- $target = dirname("./"); if ($dir = opendir($target)) { while (($file = readdir($dir)) !== false) { if ($file != "." && $file != "..") { echo "<A href=\"$file\">$file</A><br>"; } } closedir($dir); } ---------------------------------------------- 上記のように自サーバのディレクトリ指定はいけますが 別サーバの指定がわかりません。 簡単っぽいのですが、宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう