我不知道我在這裏做錯了什麼......但我注意到我的File.Move()不重命名任何文件。
此外,有沒有人知道如何在我的第二個循環,我可以填充我的.txt文件的路徑和清理文件名列表?爲什麼不是我的File.Move()工作?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
//recurse through files. Let user press 'ok' to move onto next step
string[] files = Directory.GetFiles(@"C:\Documents and Settings\jane.doe\Desktop\~Test Folder for [SharePoint] %testing", "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
Console.Write(file + "\r\n");
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
//End section
//Regex -- find invalid chars
string pattern = " *[\\~#%&*{}/<>?|\"-]+ *";
string replacement = " ";
Regex regEx = new Regex(pattern);
string[] fileDrive = Directory.GetFiles(@"C:\Documents and Settings\jane.doe\Desktop\~Test Folder for [SharePoint] %testing", "*.*", SearchOption.AllDirectories);
List<string> filePath = new List<string>();
//clean out file -- remove the path name so file name only shows
string result;
foreach(string fileNames in fileDrive)
{
result = Path.GetFileName(fileNames);
filePath.Add(result);
}
StreamWriter sw = new StreamWriter(@"C:\Documents and Settings\jane.doe\Desktop\~Test Folder for [SharePoint] %testing\File_Renames.txt");
//Sanitize and remove invalid chars
foreach(string Files2 in filePath)
{
try
{
string sanitized = regEx.Replace(Files2, replacement);
sw.Write(sanitized + "\r\n");
System.IO.File.Move(Files2, sanitized);
System.IO.File.Delete(Files2);
}
catch (Exception ex)
{
Console.Write(ex);
}
}
sw.Close();
}
}
}
我很新的C#和想寫通過特定驅動遞歸的應用,發現無效字符(如正則表達式指定),從文件名中刪除它們,並然後編寫一個具有路徑名和修正的文件名的.txt文件。
任何想法?
如果您是C#的新手,請不要在沒有處理異常的情況下嘗試/ catch;你很可能無視錯誤信息來解釋發生了什麼問題。 – Flynn1179 2010-06-16 15:05:11
找出爲什麼'File.Move()'不起作用可以通過不將塊封裝在抓取和釋放流中而變得更容易一些。 – Lance 2010-06-16 15:05:26
對於新程序員來說很不錯。現在,看到空的'catch {}'塊?這就是你沒有看到真正的錯誤的原因!嘗試'catch(Exception ex){Console.Write(ex); }' – Kobi 2010-06-16 15:06:03