C#读取文件目录输出到CSV文件中

土豆你个番茄 上海大学 高级软件工程师  2011-11-17 01:12:53

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Data;
using Microsoft.VisualStudio.SourceSafe.Interop;


class DirectoryFileCount
{

static long files = 0;
static long directories = 0;


static void Main()
{
try
{
Console.WriteLine("Enter the path to a directory:");

string directory = Console.ReadLine();

// Create a new DirectoryInfo object.
DirectoryInfo dir = new DirectoryInfo("C:/123");

if (!dir.Exists)
{
throw new DirectoryNotFoundException("The directory does not exist.");
}

// Call the GetFileSystemInfos method.
FileSystemInfo[] infos = dir.GetFileSystemInfos();

//Console.WriteLine("Working...");

// Pass the result to the ListDirectoriesAndFiles
// method defined below.
ListDirectoriesAndFiles(infos);

// Display the results to the console.
Console.WriteLine("directories: {0}", directories);
Console.WriteLine("files: {0}", files);

}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{

Console.ReadLine();
}
}

static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
{
// Check the FSInfo parameter.
if (FSInfo == null)
{
throw new ArgumentNullException("FSInfo");
}


List<string> list = new List<string>();
// Iterate through each item.
foreach (FileSystemInfo i in FSInfo)
{
// Check to see if this is a DirectoryInfo object.
if (i is DirectoryInfo)
{
// Add one to the directory count.
directories++;

// Cast the object to a DirectoryInfo object.
DirectoryInfo dInfo = (DirectoryInfo)i;

// Iterate through all sub-directories.
ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());




Console.WriteLine(dInfo.FullName);

list.Add(dInfo.FullName);



// 实例化一个StreamWriter 对象,创建文件
using (StreamWriter sw = new StreamWriter(@"C:\new.txt"))
{
foreach (string para in list)
{
//输出信息
//Console.WriteLine(para);
//写入信息
sw.WriteLine(para);
sw.Flush();
}
}



}
// Check to see if this is a FileInfo object.
else if (i is FileInfo)
{
// Add one to the file count.
files++;

FileInfo fInfo = (FileInfo)i;

//Console.WriteLine("**************所有文件******************");


// Console.WriteLine(fInfo.Name);



}

}
}
}





谁帮我看一下,为什么我不能输出全部的控制台信息,只能输出一部分
...全文
130 点赞 收藏 4
写回复
4 条回复
土豆你个番茄 2011年11月17日
[Quote=引用 2 楼 ivorstar 的回复:]
因为你每次递推调用ListDirectoriesAndFiles()时,都会新建一个

C# code

List<string> list = new List<string>();

然后你又

C# code

StreamWriter sw = new StreamWriter(@"C:\new.txt")

每次都新建一个new.txt

要么你就用全局的li……
[/Quote]


额 如果以追加方式也不好啊 那不是我每次运行项目,文件中就追加一次啊 还是相同的内容。。。。。
回复 点赞
土豆你个番茄 2011年11月17日
[Quote=引用 2 楼 ivorstar 的回复:]
因为你每次递推调用ListDirectoriesAndFiles()时,都会新建一个

C# code

List<string> list = new List<string>();

然后你又

C# code

StreamWriter sw = new StreamWriter(@"C:\new.txt")

每次都新建一个new.txt

要么你就用全局的li……
[/Quote]


OK了,非常感谢,我郁闷的很久啊 非常感谢
回复 点赞
ivorstar 2011年11月17日
因为你每次递推调用ListDirectoriesAndFiles()时,都会新建一个
List<string> list = new List<string>();

然后你又
StreamWriter sw = new StreamWriter(@"C:\new.txt")

每次都新建一个new.txt

要么你就用全局的list,要么就用追加的方式打开文件
StreamWriter sw = new StreamWriter(@"C:\new.txt", true)

回复 点赞
tanghuawei 2011年11月17日
不明白意思,你这个不就是输出C:/123目录下的所有文件数(包括子文件夹内的)和文件夹数吗?
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告