|
分類:[C#]
C#を触り始めて4日目くらいの初心者ですが、適当に切って貼って、動くように改良していたらエラーが出ました。
大抵のエラーは弄っていたらなんとかなったのですが、これはどうしようもなくなったので質問させてもらいます。
内容
コンソールアプリケーション
ファイル(ディレクトリ)のドロップによる起動。
ドロップされたもののパスを取得。
→ファイルかディレクトリか判別してフォルダサイズ(ディレクトリなら配下のすべてのファイルのサイズ)を取得。
(何のためにこれを作ったかというと、勉強のため、、、です。)
VS2013Express使用
---------------------------------------------------
static void Main(string[] args)
{
string[] files = System.Environment.GetCommandLineArgs();
if (files.Length > 1)
{
Console.WriteLine("ドロップされました。");
for (int i = 1; i < files.Length; i++)
{
if(File.Exists(files[i]) == true)
{
FileInfo fileSize = new FileInfo(files[i]);
long size = fileSize.Length;
Console.WriteLine("{0}",size);
}
else
{
long lTotalFileSize = GetDirectoryFileSize(files[i]); //ここでエラー
}
}
}
else
{
Console.WriteLine("終了");
}
Console.ReadKey();
}
public static long GetDirectoryFileSize(DirectoryInfo hDirectoryInfo)
{
long lTotalSize = 0;
foreach (System.IO.FileInfo cFileInfo in hDirectoryInfo.GetFiles())
{
lTotalSize += cFileInfo.Length;
}
foreach (System.IO.DirectoryInfo hDirInfo in hDirectoryInfo.GetDirectories())
{
lTotalSize += GetDirectoryFileSize(hDirInfo);
}
return lTotalSize;
}
---------------------------------------------------
エラー内容
エラー 1 'ConsoleApplication.Program.GetDirectoryFileSize(System.IO.DirectoryInfo)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
エラー 2 引数 1: 'string' から 'System.IO.DirectoryInfo' に変換できません。
他の関数から持ってくるのが初めてで正直よくわかってないのが事実です。
初歩的なものだと思いますがどうかよろしくお願いします。
また、C#を学ぶにあたっておすすめの書籍は何でしょうか。
色々見かけますがありすぎて結局何が良いのかよくわかりません。
|