2012-10-21 107 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