【C#】【IO】【实例】接上一个统计的新功能

发布时间 2023-09-25 20:22:34作者: VanGoghpeng

先用Python来创建多层级文件夹:

import os

root_path = r"C:\Users\Desktop\文案整理\Practice"

for item in range(1, 41):
    foldname = os.path.join(root_path, str(item))
    os.mkdir(foldname)

    foldname_son1 = os.path.join(foldname, str(item) + f'.{item}')
    os.mkdir(foldname_son1)

    for i_item in range(1, 501):
        foldname_son1_son = os.path.join(foldname_son1, str(i_item) + f'..{i_item}')
        os.mkdir(foldname_son1_son)

得到的树结构:

|-practice
|  |- 1
|  |  |- 1.1
|  |  |  |- 1..1
        ...
|  |  |  |- 500..500

读取遍历所有文件并将路径保存到文本中,然后再将指定图片保存到指定文件夹中:

 1 string fi = @"C:\Users\Desktop\文案整理\Practice"; // 整图文件夹
 2 string SN_txt = @"C:\Users\Desktop\文案整理\SN_NaemCollection.txt"; // 所有SN的路径记录
 3 string targefold = @"C:\Users\Desktop\文案整理\New"; // SN保存路径
 4 string SN = "302..302"; // SN编号
 5 Save_SNPath(fi, SN_txt);
 6 CopySN_Picture(FindSN_Picture(SN_txt, SN), targefold);
 7 
 8 void Save_SNPath(string fi, string SN_txt)
 9 {
10     // 清空文件内容
11     File.WriteAllText(SN_txt, String.Empty);
12     foreach (var item in Directory.GetDirectories(fi))
13         foreach (var i_item in Directory.GetDirectories(item))
14             foreach (var ii_item in Directory.GetDirectories(i_item))
15                 // 保存SN路径
16                 using (StreamWriter write = new StreamWriter(SN_txt, true))
17                     write.WriteLine(ii_item);
18 }
19 
20 string FindSN_Picture(string SN_txt, string SN)
21 {
22     // 查找SN_Picture
23     string [] f = File.ReadAllLines(SN_txt);
24     foreach (var item in f)
25         if (item.Contains(SN))
26         {
27             // 因 *..* 结构文件夹名会重复,所以需要再次遍历
28             string[] pic = Directory.GetFiles(item, "*.jpg");
29             if (pic.Length > 0)
30                 foreach(var i in pic)
31                     return i;
32         }
33     return "NULL";
34 }
35 
36 void CopySN_Picture(string soursefold, string targefold)
37 {
38     string ssfold = Path.Combine(targefold, DateTime.Now.ToString("d").Replace("/", "_") + "_SN");
39     // 创建当日SN文件夹
40     Directory.CreateDirectory(ssfold);
41 
42     // 复制SN中的图片至SN文件夹
43     File.Copy(soursefold, Path.Combine(ssfold, "2.jpg"));
44 }

后续将继续更新其他功能...