2012-10-21 124 views
0

可以做一些这个问题的帮助。我使用system.io,我必须做的事情需要文件被移动,分组,重命名。 。使用system.io读取文件?

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

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

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

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

  1. 读取文件目录(我提出他们对这个如此不确定?)
  2. 组由项目没有(不确定)
  3. 在SQL数据库创建工作记录
  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\"); 
    } 
} 
+5

您究竟在询问什么?你不可能找到能为你完成项目的人。堆栈溢出是找到特定的东西帮助。 – usr

+1

你的问题似乎经过深思熟虑。我喜欢你如何逐步打破这个过程。如果你试图以类似的方式打破第二步,你会更接近找到解决方案。 – neeKo

回答

2

你可以首先声明一个DirectoryInfo类的dirctory的问题

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 
} 
+0

这听起来不错,谢谢,分组会发生哪一段代码? – user1259076

+0

我会怀疑在foreach循环中。你可以测试f.FileName的移动或复制的任何标准或任何你需要做的文件。如果您需要分组,则可以为每个组创建一个List 对象,并且在逐步浏览文件时,将FileInfo放入正确的List <>对象,然后通过这些List <>对象进行foreach移动或复制或任意。你的选择。 – Wanabrutbeer

+0

或者如果你的分组允许,你可以在最初的GetFiles()调用中使用不同的通配符,比如“B-1234 *”。pdf“,然后所有这些移动到正确的子目录,或无论您的行动需要 – Wanabrutbeer