[英]C# hierarchy of folders
我正在尝试做一些项目并陷入其中。 我正在使用Java和C ++,没有使用C#,但是我可以使用它-创建并保存一个XML文件,该文件包含指定驱动器上文件夹的完整层次结构,包括所有短文件的列表(短文件最多8个字符表示名称,最多3个字符作为扩展名)。 我还需要具有字节和字母形式的文件和文件夹的大小,并使用小名称打印文件(小于11个字符,包括扩展名)。 这是我的代码:
using System;
using System.IO;
using System.Xml;
using System.Linq;
public class Program{
public static void Main(string[] args)
{
//Your code goes here
string[] folders = {"Folder1", "Folder2"};
string[] files = {"File1.txt", "File2.txt"};
XmlTextWriter w1 = new XmlTextWriter("filesandfolders.xml", System.Text.Encoding.UTF8);
w1.WriteStartElement("Folders");
Console.WriteLine(folders[0]);
Console.WriteLine(files[0]);
Console.WriteLine(folders[1]);
Console.WriteLine(files[1]);
w1.WriteEndElement();
w1.WriteEndDocument();
File.WriteAllText("filesandfolders.xml", "structure of folders and files");
long fileSize = 0;
int fileLegth = 0;
int NumberOfShortFiles;
Console.WriteLine("Folder names are: [{0}]", string.Join(", ", folders));
Console.WriteLine("File names are: [{0}]", string.Join(", ", files));
for(long p=0; p<=files.Length; p++){
Console.WriteLine("Size of this file is "+fileSize);
}
for(int q=0; q<=files.Length; q++){
Console.WriteLine("Directory length is "+q);
}
for(int m=0; m<=11; m++){
NumberOfShortFiles = m;
}
if(fileLegth<=11){
Console.WriteLine("File name is short.");
}
else{Console.WriteLine("File name is short or not evaluated.");}
}
}
我知道这个主意-制作文件和文件夹,我用数组存储文件,用另一个数组存储文件夹,希望知道如何使它们成为一种XML,然后保存并使用一些函数/循环来查看大小,打印它们等,但是我因为我从未见过这种编程语言,所以感到非常困惑。
让我说,现在的问题是我的大小以字节为单位,但没有字母数,并且我缺少根元素(这就是编译器所说的)。 我没有使用序列化,所以我选择了一些我熟悉的东西(数组或列表)。
这种方法不是最有益的方法,因为如果文件夹中有File,该怎么办? 在它旁边还有另一个带有另一个文件的文件夹?
|-- Folder1
| |- File1
| |- File2
|-- Folder2
| |- File3
| |- File4
从另一个角度解决问题,您可以使用称为OOP的方法-面向对象的编程 ,其中有几个类,您将实例化为对象,并且这些对象将了解其他对象(例如,文件夹将了解内部文件,反之亦然)。
谢谢您,Microsoft已经在.NET中创建了此结构,可以在名称空间System.IO
找到它- 链接到MSDN 。
对于原始想法/方法,请查看https://msdn.microsoft.com/zh-cn/library/dd997370(v=vs.110).aspx ,其中描述了如何遍历所有目录/文件和获取有关它们的信息。
一旦有了这种类结构(文件/目录),就该转向序列化了。 即使您不熟悉,.NET也会为大多数类提供XmlSerializer,您只需要创建自己的类即可,该类将告诉Serializer:“ 如何序列化我的类 ”。
解决方案的文字说明:
Directories/Files
属性/变量 一些可以使用的代码(缺少XML部分):
public class FileTreeManager
{
private DirectoryInfo mDirectoryInfo;
public FileTreeManager(string aEntryPoint)
{
SetEntryPoint(aEntryPoint);
}
public void SetEntryPoint(string aEntryPoint)
{
this.mDirectoryInfo = new DirectoryInfo(aEntryPoint);
}
public override string ToString()
{
StringBuilder result = new StringBuilder();
foreach (DirectoryInfo dir in this.mDirectoryInfo.EnumerateDirectories())
{
result.Append("|-- " + dir.Name + Environment.NewLine);
}
return result.ToString();
}
}
您的主体看起来像:
var ftm = new FileTreeManager("C:\\");
Console.WriteLine(ftm.ToString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.