Я не уверен, что именно я делаю неправильно здесь ... но я заметил, что мой 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# и пытается написать приложение, которое рекурсивно через определенный диск, находит недопустимые символы (как указано в шаблоне RegEx), удаляет их из файла и затем напишите TXT-файл с именем пути и исправленным именем файла.
Любые идеи?
Если вы новичок в C#, НИКОГДА не выполняйте попытку/улов без обработки исключения; вы, вероятно, игнорируете сообщение об ошибке, которое объяснит, что случилось. – Flynn1179
Выяснение причин, по которым 'File.Move()' не работает, может немного упроститься, не упаковывая блок в поток catch-and-release. – Lance
Довольно хорошо для нового программиста. Теперь, видите, что пустой блок 'catch {}'? Вот почему вы не видите настоящую ошибку! try 'catch (Exception ex) {Console.Write (ex); } ' – Kobi