1

次のステートメントにはエラーがあります。修正してください。

 long siz = dirinfo.EnumerateFiles().Sum(file => file.length);

'System.IO.DirectoryInfo' には 'EnumerateFiles' の定義が含まれておらず、タイプ 'System.IO.DirectoryInfo' の最初の引数を受け入れる拡張メソッド 'EnumerateFiles' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)

必要な名前空間はありますか? 私はすでに名前空間を入れていますSystem.IO

皆さんが言ったように、私はコードを変更し、

static long dirsize(DirectoryInfo dirinfo,bool includesubdir) { siz += dirinfo.GetFiles("*", SearchOption.AllDirectories).Sum(dire => dirsize(dire, true));

}

私がそれを使用しているとき、 fileinfo から directoryinfo に変換できないため、エラーが発生します。

私の質問は、directoryinfoをfileinfoに変更することで、特定のディレクトリサイズを取得できますか? 出来ますか...?それを修正するために私を助けてください。前もって感謝します。

4

3 に答える 3

2

4.0より前の.Net Frameworkでは、使用できます

long siz = dirinfo.GetFiles().Sum(file => file.Length);

実際、あなたの場合、違いはありません。いずれにせよ、サイズを計算するにはすべてのファイルを列挙する必要があるためです (EnumerateFiles はファイルを 1 つずつ返し、GetFiles はすべてのファイルを返します)。

于 2013-01-25T11:09:13.273 に答える
1

DirectoryInfo.EnumerateFiles()メソッドは .NET 4.0 に付属しています。

.NET Framework 4.0バージョンをダウンロードする必要があります。

代わりにメソッドを使用してみてくださいDirectoryInfo.GetFiles().NET Framework 1.1以降に存在します。

現在のディレクトリからファイル リストを返します。

于 2013-01-25T11:08:41.550 に答える
1

.NET 4 より前のバージョンのフレームワークを使用していると仮定します。

DirectoryInfo.EnumerateFilesが .NET 4 で追加されました。DirectoryInfo.GetFiles代わりに、最初にすべてをメモリにロードし、1.1 以降で使用できるものを使用できます。

ここでの別の(テストされていない)アプローチ:

http://www.codeproject.com/Articles/12782/File-System-Enumerator-using-lazy-matching

于 2013-01-25T11:06:33.623 に答える