【发布时间】:2018-03-28 18:03:48
【问题描述】:
我正在尝试做一些项目并坚持下去。我在做 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,然后保存它并使用一些函数/循环来查看大小、打印它们等,但我很困惑,因为我之前从未见过这种编程语言。
让我说,现在的问题是我有以字节为单位的大小,但没有字母数,而且我缺少根元素(这是编译器所说的)。我没有使用序列化,所以我拿了一些我熟悉的东西(数组或列表)。
【问题讨论】:
-
您似乎忘记发布问题/问题
-
恕我直言,最好创建像
public class File { /* fields describing the file */ }这样的对象,然后派生文件夹类public class Folder : File { /* describe the folder */ List<File> _FilesInside; }。然后您可以使用 XmlSerializer 将其序列化为 XML。 -
@m.rogalski 虽然我同意你的观点,但我认为,对于刚开始的人来说可能太多了,甚至连自己代码的逻辑都丢失了。
-
@Prix 我认为他输的原因是因为所有这些代码都写在入口点中。但这只是我的意见。
-
@m.rogalski .NET 已经有代表文件和文件夹的类,它们是可序列化的。