VB.NET初心者です。
プログラム内でとある拡張子のファイルだけを検索してListViewに表示させたいのですが、プログラム自体の都合で、特定のディレクトリだけを検索する、という事ができません。
(そこの部分はまた別の話なので省略^^;)
System.IO.Directory.GetFiles~という物を使って上記の様な設定は可能でしょうか?

よくわからない文章ですが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ということは検索対象のパスをその都度指定するという仕様にしたいということで良いんですよね?



TreeViewだったらSelectedNode.FullPathとかでその選択ノードのフルパスは取得できますので
System.IO.Directory.GetFiles(TreeView1.SelectedNode.FullPath)
とかではダメなんでしょうか?

あとはそうやって取得したファイルを一つ一つ拡張子で判別し、通ったパスのみListViewにAddするという手順になると思います。
    • good
    • 0
この回答へのお礼

早い回答ありがとうございます。
手順は教えていただいた通りで可能だと思うのですが、肝心のフルパス取得で「指定されたパスのフォーマットはサポートされていません」と弾かれてしまいます。

調べが足りていないのですが、どうやらTreeViewの表示が[C:\]ではなく、例えば[ローカルディスク(C:)]となっている事に関係がありそうなんですが・・・。
(自分で納得していないので忘れてください)

何度も申し訳ないです・・・。

お礼日時:2005/04/07 18:00

「どこそこ」から「なになに」を探せという場合に、「どこそこ」が無いにも関わらず「なになに」を探すことが出来ますかということでしょうかね??


これって禅問答の部類ですよ。

場所が指定できなくても例えば最低限"C:\"とか指定をするしかないです。
方法はDirectryクラスを使ってもいいですし、FileSystemObjectを使ってもいいですが。

Directryクラスの使い方
http://dobon.net/vb/dotnet/file/getfiles.html
    • good
    • 0
この回答へのお礼

返答ありがとうございます。

「どこそこ」が無い、というのは、その度に探す場所が変わるからなんです。
前に省略した部分の事なんですが、エクスプローラを表示した時と同じようにTreeViewで表示されたディレクトリを選択した場合に、その中から指定したファイルを探したい・・・という仕組みなんです。
C:\だけでなく、AやらDやらでも探せるようにしたいので・・・。

変な質問をしてしまって申し訳ありません。

お礼日時:2005/04/07 13:12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOS「XP」使用のハードディスクをフォーマットして入れなおし

XPの調子が悪くなってしまって、一旦ハードディスクの中身をフォーマットしてから、OSとソフトを入れ直したいのですが、フォーマットの仕方がよく分りません。
XPの場合ソフトからフォーマットできるような事を聞いた覚えがあるんですが、これは「OSのみをフォーマットする」といういう意味なのか、「ハードディスク内を全てフォーマットする」という意味なのか、どちらでしょうか?
そして、私が今、希望としている、ハードディスク内を全てフォーマットして全く新しい状態としてOSを入れなおしたい場合はどうやればいいのでしょうか?
バックアップCDは作ってあります。よろしくお願いします。

Aベストアンサー

・PCの電源を入れます。
・POST画面(EnergySterが表示される)で下の方に
「Press DEL to enter SETUP」と表示されたら
すかさず「DEL」キーを押します
※機種によってキーが違う「F2」キーかもしれない。
・「CMOS Setup Utility」の画面が出ますので
「Advanced BIOS Features」の項目を↓↑キーで選択後「Enter」
・「Advanced BIOS Features」内の
「First Boot Device」を↑↓キーで選択後「Enter」
・「Floppy」か「HDD-0」になっていたら「CD-ROM」に変更します。
・「F10」キーでセーブします。
・「Yes or No」を聞かれますから「Y」キーを押します
・再起動しますからWindowsXPのCD-ROMを入れてください。

○余計なトラブルを避けたいので、できるだけ工場出荷状態に戻してください。
高速なメモリで不具合が出ることがあるそうです

○リカバリーCDの場合は指示に従ってインストールしてください

○WindowsXP通常版の場合
・自動的にブートしない場合(Press Enter…と指示が出た場合)は何かキーを押してください
・指示に従ってインストールしてください。
※パーテーションの作成とフォーマットはここで行なわれます
※フォーマット形式は9x系と互換性がなくていいならNTFSで。
※クイックフォーマットは不具合を引きずる可能性があるのでお勧めしません。

ユーザー名は「1バイト文字(半角英数字)」で。
漢字はDOSから見えません

○余談
WindowsXPのインストーラでパーテーションを区切るとドライブ文字が入れ替わることがあるので、9x系の起動フロッピーかDOSのフロッピーで起動して「fdisk」で区切ったほうが望ましい。
32GB以上のFATパーテーションを区切ることができるし。拡張パーテーションも確保できる。

・PCの電源を入れます。
・POST画面(EnergySterが表示される)で下の方に
「Press DEL to enter SETUP」と表示されたら
すかさず「DEL」キーを押します
※機種によってキーが違う「F2」キーかもしれない。
・「CMOS Setup Utility」の画面が出ますので
「Advanced BIOS Features」の項目を↓↑キーで選択後「Enter」
・「Advanced BIOS Features」内の
「First Boot Device」を↑↓キーで選択後「Enter」
・「Floppy」か「HDD-0」になっていたら「CD-ROM」に変更します。
・「F10」キーでセーブし...続きを読む

QSystem.IO.Directory.GetFilesの順番

For Each strFileName As String In Directory.GetFiles("フォルダ名","*.TXT")
'なにか処理
Next strFileName


としてファイル名を読み込んで処理する場合、ファイル名でソートされて順番に出てくるような気がします。
どのような基準でソートされるのかを調べているのですが、はっきり明記されているものが見つかりません。

安心して使うために裏付けがほしいのですが、どこかに詳細な資料はないでしょうか?
よろしくお願いします。

Aベストアンサー

内部的に FindFirstFile / FindNextFile を使っているようだけど
http://www.microsoft.com/japan/msdn/net/general/win32map.asp

取得する順番は..
http://forums.belution.com/ja/vc/000/038/23.shtml

なるほど!

正式情報は
http://msdn.microsoft.com/library/en-us/fileio/fs/findnextfile.asp

The order in which this function returns the file names is dependent on the file system type. With the NTFS file system and CDFS file systems, the names are returned in alphabetical order. With FAT file systems, the names are returned in the order the files were written to the disk, which may or may not be in alphabetical order.

内部的に FindFirstFile / FindNextFile を使っているようだけど
http://www.microsoft.com/japan/msdn/net/general/win32map.asp

取得する順番は..
http://forums.belution.com/ja/vc/000/038/23.shtml

なるほど!

正式情報は
http://msdn.microsoft.com/library/en-us/fileio/fs/findnextfile.asp

The order in which this function returns the file names is dependent on the file system type. With the NTFS file system and CDFS file systems, the names are returned in alphabetical or...続きを読む

QOSを再インストールする=フォーマットする  ?

OSを再インストールする=フォーマットする
という事でしょうか?同じ意味でしょうか?
「再インストール=フォーマット」でしょうか?

よろしくお願いします。

Aベストアンサー

同じ意味ではありません。
OSを再インストールする途中過程でフォーマットするですか?正しくは!

Q.netのListView

暇な時にでも回答お願いします。

VB.NETで開発をしています。
ListViewの列幅を変更できないようにしたいのですが、そのような事は可能でしょうか?
可能であるならば、方法を教えて下さい。
よろしくお願いします。

Aベストアンサー

ListViewのヘッダーの幅が変化した時に呼び出されるイベントハンドラが準備されていないため、ヘッダーを表示しつつ列幅を変更できないようにするのは困難です。
ただ、HeaderStyleプロパティをSystem.Windows.Forms.ColumnHeaderStyle.Noneとしてヘッダーを非表示にすることで列幅を変更できないようにできますので、これとEnableプロパティをFalseにした別のListViewを重ね合わせると、見た目上列幅の変更ができないListViewが実現できます。

Q以前に新品のHDDにOSをインストールする時は自動的にフォーマットして

以前に新品のHDDにOSをインストールする時は自動的にフォーマットしてくれると教えていただいたのですが、インストール開始まで見ていたのですが「フォーマットしています」というようなメッセージはありませんでした。
不安なので確認したいのですが、このままで大丈夫なのでしょうか?
OSはビスタ32bitです。

Aベストアンサー

少なくともフォーマットされていなければ
ファイルの書き込みができませんから
OSのインストールができません。

そういう意味では大丈夫です。

HDDという部品は、基本的にはフォーマットやパーティション作成無く
不定の状態で出荷されます。ですから、パーティションの作成や
フォーマットを明示的に行なって利用するのが基本です。

ただし、HDDを部品としてではなく、エンドユーザー向け製品として
販売してる場合には、パーティション作成とフォーマットが
事前に行なわれた状態で販売されている場合があります。

そのため、フォーマットの工程無くインストールできることもあります。

ただし、以前はWindowsMe,98などで利用できるFAT32フォーマットで
売られている場合もありましたから…
(Vistaではそのままインストールされることはないと思いますが)
念のために、HDDの管理から、NTFSフォーマットになっているか
確認しておいた方がいいかもしれません。

FAT32は、基本的には1970年代に開発されたFATファイルシステムに
新しい機能を付け足してきたもので、信頼性の低さが問題となります。

NTFSはそのFATより信頼できる次世代ファイルシステムとして
1980年代後半に開発されたHPFSを元に
Microsoftがさらに改良して完成させたファイルシステムです。

FATファイルシステムが適したHDDは、Microsoftの文書によると
200MB程度のパーティションサイズとなっています。
NTFSが世に出た1994年には1GBのHDDがリリースされていましたから
FATは、本来20世紀に消えてしかるべき技術でした。

実際には、Microsoft自身が、1990年代に、大衆向けOSに
信頼性が低いことが分かっているFAT系ファイルシステムのみを提供し
結果的に、現在でもFAT32が選ばれる温床となっています。

内蔵でも外付けでも、HDDの故障はいつおきるかわかりませんが
そのうちOSの異常終了などによる軽微なトラブルが
NTFSのほうがFAT32よりも、確実に、また短時間で修復されます。

データの保全はバックアップが必須ですが…
OSの停止や再インストールのリスクを下げるためには
NTFSを使うのが鉄則です。
(というかVistaだとNTFSじゃないとインストールできないと記憶している)

少なくともフォーマットされていなければ
ファイルの書き込みができませんから
OSのインストールができません。

そういう意味では大丈夫です。

HDDという部品は、基本的にはフォーマットやパーティション作成無く
不定の状態で出荷されます。ですから、パーティションの作成や
フォーマットを明示的に行なって利用するのが基本です。

ただし、HDDを部品としてではなく、エンドユーザー向け製品として
販売してる場合には、パーティション作成とフォーマットが
事前に行なわれた状態で販売されている場合があり...続きを読む

QSystem.Collections.Generic.Listのソートについて

お世話になります。vb.net2010で開発をしております。
System.Collections.Generic.ListにクラスをAddしたクラス変数をソートしたいと考えております。
コードを以下に記述します。

Dim list As New List(Of aaa)
Dim listWork As New aaa


' クラス変数に格納する
listWork.strA = "2015/02/01"
listWork.strB = "17:00"
listWork.strC = "タロウ"
' リストに追加する
list.Add(listWork)

' クラス変数に格納する
listWork.strA = "2015/02/02"
listWork.strB = "17:00"
listWork.strC = "ジロウ"
' リストに追加する
list.Add(listWork)

Public Class aaa
Public strA As String(日付型文字列)
Public strB As String(時刻文字列)
Public strC As String(任意の値)
End Class

このlistを日付型文字列でソートしたいのですが、いまいちうまくいきません。
sortメソッドはlistに実装されているようですが、使用方法が理解できていません。
実際にソートを行うことは可能なのでしょうか。
もし可能であれば、サンプルコードをご教示いただけますでしょうか。
恐れ入りますが、どなたかご教示いただければ幸いに存じます。

以上宜しくお願い申し上げます。

お世話になります。vb.net2010で開発をしております。
System.Collections.Generic.ListにクラスをAddしたクラス変数をソートしたいと考えております。
コードを以下に記述します。

Dim list As New List(Of aaa)
Dim listWork As New aaa


' クラス変数に格納する
listWork.strA = "2015/02/01"
listWork.strB = "17:00"
listWork.strC = "タロウ"
' リストに追加する
list.Add(listWork)

' クラス変数に格納する
listWork.strA = "2015/02/02"
listWork.strB = "17:00"
listWork.strC = "...続きを読む

Aベストアンサー

簡単な方法では,Comparisonを引数にとるSortメソッドを使います。
https://msdn.microsoft.com/ja-jp/library/w56d4y5z(v=vs.100).aspx

list.Sort(Function (x, y) String.Compare(x.strA, y.strA))

何箇所でも行うのであれば,IComaprer(Of aaa)を実装したクラスを用意して,そのインスタンスを渡すとよいでしょう。


ただし,元のプログラムでは,listに入っている要素が全て同じオブジェクトのインスタンスになっています。
Addする要素は,それぞれ別々にNewした要素にしないといけません。
現在のコードで,2回Addした直後にブレークポイントをおいて,listの各要素のフィールドの値を見てみるとよいでしょう。

QMac OS Xでフロッピーをフォーマットするには

Mac OS Xでフロッピーをフォーマットするにはどうしたらよいのでしょうか。
現在外付けのFDDを使っています。

OS:Mac OS X Lion 10.7.4

Aベストアンサー

アプリケーション/ユーティリティ/ディスクユーティリティでフォーマットできませんか。

QSystem.Net.Sockets.SocketException が発生

ちょっと困った事になってしまったので質問させて頂きます

VB.NETで作成されたクライアント&サーバー型のシステムがあり
現在サーバー側はWindows2003サーバーで稼動しています

過去のテスト環境が使用できなくなった為にテストサーバーをを再構築することにりました

残されたドキュメントを参照しながら
・サーバープログラム導入
・DBの設定
・サービスの起動
・ファイアウォールの解除

上記を行いクライアントから接続を試みたところ
下記のエラーが発生しました

System.Net.Sockets.SocketException: 対象のコンピュータによって拒否されたため、接続できませんでした。

当方Windows2003に詳しくないので、何処の設定を変更すればよいのかアドバイスを頂きたく御願い致します

稼動中のサーバー:Windows2003 StandardEdition
再構築中のサーバー:Windows2003 R2 StandardEdition SP1

この違いも関係しているのでしょうか?
宜しく御願い致します

ちょっと困った事になってしまったので質問させて頂きます

VB.NETで作成されたクライアント&サーバー型のシステムがあり
現在サーバー側はWindows2003サーバーで稼動しています

過去のテスト環境が使用できなくなった為にテストサーバーをを再構築することにりました

残されたドキュメントを参照しながら
・サーバープログラム導入
・DBの設定
・サービスの起動
・ファイアウォールの解除

上記を行いクライアントから接続を試みたところ
下記のエラーが発生しました

System.Net.Sockets.S...続きを読む

Aベストアンサー

そういう理解もごもっともなんですが・・・

つまり原因は旧サーバと新サーバ間に何かしら(設定?Ver差異?)の相違があって、
プログラムはその相違を吸収できる実装ではないのだと思うんです。

プログラムがバグかどうかはおいておいて、その吸収できていない相違は何なのか?
これを追求するにはソースを解析するしかないと思います。(=デバッグ)
※ポイントになる部分だけでもいいんです。

というのも、ソースが公開されていない現状では、どんな実装がなされているのかは
この投稿を読んでいる人には(私を含めて、他のどんな人でも)分からない訳です。
それをどんな書き方をされているのか推測で、あぁでもないこぉでも無いとやっても、、、

一向に目的に近づけないのをご理解していただけますでしょうか。。。


独自に実装したサービスではなく、標準の機能についての事柄であれば、
他の方からも参考になる意見はどんどん出ると思うのですが。

QNTFSフォーマットパソコン(OS:XP)と他のパソコン(OS:Win98SE)のファイルの共有について

先日購入しましたパソコン(OS:Windows XP)と他のパソコン(OS:Win98SE)をLANでつないだ場合、NTFSフォーマットのWindows XPのファイルはWin98SEからは見えないのでしょうか?
もしこのような場合、どちらからもファイルの共有ができるようにするためXPのフォーマットを後からFAT32に変更できるのでしょうか?
よろしくお願いします。

Aベストアンサー

問題無く見れます。
共有フォルダを持つマシンに対して参照要求を行うので、間には必ず共有フォルダを持つマシンのOSが介入します。
つまり、共有フォルダを持つマシンのOSが参照可能な共有フォルダであれば、参照可能です。

QC#でSystem.IO.FileFormatEx

VB2010で
System.IO.FileFormatException
をThrowしているコードがあります。

これをC#2010にコンバートしたのですが
上記箇所に於いて

型または名前空間名 'FileFormatException' は名前空間 'System.IO' に存在しません。アセンブリ参照が不足しています。

というエラーが出てしまいます。

何を参照設定すればよいのでしょうか。
またはこのような処理は不可なのでしょうか。

Aベストアンサー

http://msdn.microsoft.com/en-us/library/system.io.fileformatexception.aspx
>Assembly: WindowsBase (in WindowsBase.dll)

#Q6895736もそれっぽい解説は見つけたんだが、自分の理解が今ひとつ固まってないから保留中。


人気Q&Aランキング

おすすめ情報