问题描述
我试图将给定文件夹中每个文件的文件属性打印到一个新的文本文件中。
我可以使用以下方法将它们成功打印到控制台上
:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp2
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
List<string> arrHeaders = new List<string>();
Shell32.Shell shell = new Shell32.Shell();
Shell32.Folder objFolder;
objFolder = shell.NameSpace(@"C:\testfolder\testprop");
for (int i = 0; i < short.MaxValue; i++)
{
string header = objFolder.GetDetailsOf(null,i);
if (String.IsNullOrEmpty(header))
break;
arrHeaders.Add(header);
}
foreach (Shell32.FolderItem2 item in objFolder.Items())
{
for (int i = 0; i < arrHeaders.Count; i++)
{
Console.WriteLine(
$"{i}\t{arrHeaders[i]}: {objFolder.GetDetailsOf(item,i)}");
}
}
Console.ReadLine();
}
}
}
这恰好显示了我在控制台中所期望的,但是我希望将其打印到文本文件中。
我正在尝试使用它,尽管我不知道这是否是最好的方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp2
{
class Program
{
[STAThread]
public static void Main(string[] args)
{
List<string> arrHeaders = new List<string>();
Shell32.Shell shell = new Shell32.Shell();
Shell32.Folder objFolder;
objFolder = shell.NameSpace(@"C:\testfolder\testprop");
for (int i = 0; i < short.MaxValue; i++)
{
string header = objFolder.GetDetailsOf(null,i);
if (String.IsNullOrEmpty(header))
break;
arrHeaders.Add(header);
}
foreach (Shell32.FolderItem2 item in objFolder.Items())
{
for (int i = 0; i < arrHeaders.Count; i++)
{
FileStream fs = new FileStream("C:\\testfolder\\testprop\\Test.txt",FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
Console.Setout(sw);
Console.WriteLine($"{i}\t{arrHeaders[i]}: {objFolder.GetDetailsOf(item,i)}");
sw.Close();
}
}
}
}
}
这将创建一个文本文件,但是只显示一行,并且看起来像控制台版本中显示的最后一个属性。
我承认我不知道自己在做什么,但是有人看到一个修复程序,可以将控制台中的所有行打印到文本文件,而不是最后一行吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)