【问题标题】:Reading files using system.io?使用 system.io 读取文件?
【发布时间】:2012-10-21 16:38:49
【问题描述】:

可以在这个问题上提供一些帮助。我正在使用 system.io,我必须做一些需要移动、分组、重命名文件的事情。 .

到目前为止,使用 c# 在命令行应用程序中工作我已经将一些文件从一个目录移动到另一个目录,我现在需要像这样对一些 pdf 文件进行分组 - B-12345 1.pdf、B-12345 2.pdf、B- 12345 3.pdf、B-12345 4.pdf。有人告诉我,我不需要为了确保每个项目参考仅创建一个工作(b-1234)而将它们物理组合在一起。

为了给你一些关于这些文件分组后我在做什么的背景信息,我需要在作业表 sql 数据库中创建一条记录。但那是另一天的另一个问题,只是认为 id 会给你更多信息。

主要是我只需要有关如何读取文件目录中的文件和对文件进行分组的信息,这对我非常有益。?

为了让问题更清楚一点,这是任务中的顺序应该在命令行应用程序中完成。

  1. 读取目录中的文件(我已经移动了它们,所以不确定?)
  2. 按项目分组编号(不确定)
  3. 在 sql db 中创建作业记录
  4. 将文件移动并重命名到正确位置

提前致谢

我的代码在下面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

public class MoveForProcessing
{
    static void Main()
    {
        // move cad jobs to processing directory and delete former folder, use the System.IO.Path class.
        System.IO.Directory.Move(@"C:\Users\Ben\My Documents\Temp\", @"C:\Users\Ben\My Documents\Processing\");
    }
}

【问题讨论】:

  • 您具体要问什么?您不太可能找到可以为您完成项目的人。 Stack Overflow 可以在特定方面寻求帮助。
  • 您的问题似乎经过深思熟虑。我喜欢你如何分步分解这个过程。如果您尝试以类似的方式分解第 2 步,您将更接近于找到解决方案。

标签: c# file command-line directory .net


【解决方案1】:

您可以先声明相关目录的 DirectoryInfo 类

private System.IO.DirectoryInfo dir = System.IO.DirectoryInfo.Open(@"path");

然后为目录中的每个文件获取一个FileInfo对象数组

private FileInfo[] files = dir.GetFiles();

如果您只需要某些文件类型,也可以在 GetFiles() 中放入通配符字符串

private FileInfo[] files = dir.GetFiles("*.pdf");

然后你可以对每个 FileInfo 对象做任何你需要的递增数组

foreach(FileInfo f in files)
{
   f.Move(); // or whatever you need to do
}

【讨论】:

  • 这听起来不错,谢谢,哪段代码会发生分组?
  • 我怀疑在 foreach 循环中。您可以测试 f.FileName 以了解要移动或复制的任何标准,或者您需要对该文件执行的任何操作。如果需要分组,可以为每个组创建一个 List 对象,并在逐步浏览文件时,将 FileInfo 放入正确的 List 对象中,然后遍历这些 List 对象以移动或复制管他呢。您的选择。
  • 或者,如果您的分组允许,您可以在初始 GetFiles() 调用中使用不同的通配符,例如“B-1234*.pdf”,然后将所有这些通配符移至正确的子目录,或者无论您的行动需要什么
  • 我的应用程序 Wanabrutbeer 中提供的代码将放在哪里?
  • 哦,就在您的 Main() 方法中,您可以在循环中使用 Console.WriteLine() 向命令行提供一些进度反馈,或者如果您使用的是表单,请制作一个按钮并将其放在按钮单击处理程序中。您也可以使用 BackgroundWorker 来完成这项工作,将代码放在 DoWork 处理程序中,然后您可以访问 ProgressChanged 事件以跟上进度。
猜你喜欢
  • 2018-11-12
  • 2010-10-15
  • 1970-01-01
  • 2020-07-10
  • 2012-06-08
  • 1970-01-01
  • 2014-02-07
  • 2016-01-23
  • 1970-01-01
相关资源
最近更新 更多