C как переименовать файл

Переименование файла в C# | Блог о программировании

C как переименовать файл

как переименовать файл с помощью C#?

362   14  

взгляните на System.IO.File.Move, “переместить” файл на новое имя.

System.IO.File.Move(“oldfilename”, “newfilename”); System.IO.File.Move(oldNameFullPath, newNameFullPath);

можно использовать File.Move сделать это.

в файле.Метод перемещения, это не будет перезаписывать файл, если он уже существует. И это вызовет исключение.

поэтому мы должны проверить, существует ли файл или нет.

/* Delete the file if exists, else no exception thrown. */ File.Delete(newFileName); // Delete the existing file if existsFile.Move(oldFileName,newFileName); // Rename the oldFileName into newFileName

или окружить его с try catch, чтобы избежать исключения.

просто добавить:

namespace System.IO{ public static class ExtendedMethod { public static void Rename(this FileInfo fileInfo, string newName) { fileInfo.MoveTo(fileInfo.Directory.FullName + “\” + newName); } }}

и потом…

FileInfo file = new FileInfo(“c:\test.txt”);file.Rename(“test2.txt”);

  1. первый вариант

    избежать System.IO.File.Move решения, опубликованные здесь (отмеченный ответ включен).Он выходит из строя по сетям. Однако шаблон копирования / удаления работает локально и по сетям. Следуйте одному из решений для перемещения, но вместо этого замените его копией. Затем используйте файл.Удалить, чтобы удалить исходный файл.

    вы можете создать метод переименования, чтобы упростить его.

  2. простота использования

    используйте сборку VB в C#.Добавить ссылку на Microsoft.Тип

    затем переименовать файл:

    Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(myfile, newName);

    оба являются строками. Обратите внимание, что myfile имеет полный путь. newName – нет.Например:

    a = “C:\whatever\a.txt”;b = “b.txt”;Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(a, b);

    The C:\whatever\ папка теперь будет содержать b.txt.

Вы можете скопировать его в новый файл, а затем удалить старый с помощью System.IO.File класс:

if (File.Exists(oldName)){ File.Copy(oldName, newName, true); File.Delete(oldName);}

Примечание: в этом примере кода мы открываем каталог и ищем PDF-файлы с открытой и закрытой скобкой в имени файла. Вы можете проверить и заменить любой символ в имени тебе нравится или просто указать новое имя, используя функцию замещения.

есть и другие способы работы с этим кодом, чтобы сделать более сложные переименования, но мое главное намерение состояло в том, чтобы показать, как использовать файл.Переместить, чтобы сделать пакетное переименование. Это работало против 335 PDF файлов в 180 каталогах когда я запустил его на своем ноутбуке. Это шпора кода момента, и есть более сложные способы сделать это.

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks; namespace BatchRenamer{ class Program { static void Main(string[] args) { var dirnames = Directory.GetDirectories(@”C:\the full directory path of files to rename goes here”); int i = 0; try { foreach (var dir in dirnames) { var fnames = Directory.GetFiles(dir, “*.pdf”).Select(Path.GetFileName); DirectoryInfo d = new DirectoryInfo(dir); FileInfo[] finfo = d.GetFiles(“*.pdf”); foreach (var f in fnames) { i++; Console.WriteLine(“The number of the file being renamed is: {0}”, i); if (!File.Exists(Path.Combine(dir, f.ToString().Replace(“(“, “”).Replace(“)”, “”)))) { File.Move(Path.Combine(dir, f), Path.Combine(dir, f.ToString().Replace(“(“, “”).Replace(“)”, “”))); } else { Console.WriteLine(“The file you are attempting to rename already exists! The file path is {0}.”, dir); foreach (FileInfo fi in finfo) { Console.WriteLine(“The file modify date is: {0} “, File.GetLastWriteTime(dir)); } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); } }}

использование:

Using System.IO; string oldFilePath = @”C:\OldFile.txt”; // Full path of old filestring newFilePath = @”C:ewFile.txt”; // Full path of new file if (File.Exists(newFilePath)){ File.Delete(newFilePath);}File.Move(oldFilePath, newFilePath);

надеюсь! это будет полезно для вас. 🙂

public static class FileInfoExtensions { /// /// behavior when new filename is exist. /// public enum FileExistBehavior { /// /// None: throw IOException “The destination file already exists.” /// None = 0, /// /// Replace: replace the file in the destination. /// Replace = 1, /// /// Skip: skip this file. /// Skip = 2, /// /// Rename: rename the file. ( a window behavior) /// Rename = 3 } /// /// Rename the file. /// /// the target file. /// new filename with extension. /// behavior when new filename is exist. public static void Rename(this System.IO.FileInfo fileInfo, string newFileName, FileExistBehavior fileExistBehavior = FileExistBehavior.None) { string newFileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(newFileName); string newFileNameExtension = System.IO.Path.GetExtension(newFileName); string newFilePath = System.IO.Path.Combine(fileInfo.Directory.FullName, newFileName); if (System.IO.File.Exists(newFilePath)) { switch (fileExistBehavior) { case FileExistBehavior.None: throw new System.IO.IOException(“The destination file already exists.”); case FileExistBehavior.Replace: System.IO.File.Delete(newFilePath); break; case FileExistBehavior.Rename: int dupplicate_count = 0; string newFileNameWithDupplicateIndex; string newFilePathWithDupplicateIndex; do { dupplicate_count++; newFileNameWithDupplicateIndex = newFileNameWithoutExtension + ” (” + dupplicate_count + “)” + newFileNameExtension; newFilePathWithDupplicateIndex = System.IO.Path.Combine(fileInfo.Directory.FullName, newFileNameWithDupplicateIndex); } while (System.IO.File.Exists(newFilePathWithDupplicateIndex)); newFilePath = newFilePathWithDupplicateIndex; break; case FileExistBehavior.Skip: return; } } System.IO.File.Move(fileInfo.FullName, newFilePath); } }

как использовать этот код ?

class Program { static void Main(string[] args) { string targetFile = System.IO.Path.Combine(@”D://test”, “New Text Document.txt”); string newFileName = “Foo.txt”; // full pattern System.IO.FileInfo fileInfo = new System.IO.FileInfo(targetFile); fileInfo.Rename(newFileName); // or short form new System.IO.FileInfo(targetFile).Rename(newFileName); } }

Move делает то же самое = копировать и удалять старый.

File.Move(@”C:\ScanPDF\Test.pdf”, @”C:\BackupPDF\” + string.Format(“backup-{0:yyyy-MM-dd_HH:mm:ss}.pdf”,DateTime.Now)); в моем случае я хочу, чтобы имя переименованного файла было уникальным, поэтому я добавляю к имени штамп даты и времени. Таким образом, имя файла “старого” журнала всегда уникально:
if (File.Exists(clogfile)) { Int64 fileSizeInBytes = new FileInfo(clogfile).Length; if (fileSizeInBytes > 5000000) { string path = Path.GetFullPath(clogfile); string filename = Path.GetFileNameWithoutExtension(clogfile); System.IO.File.Move(clogfile, Path.Combine(path, string.Format(“{0}{1}.log”, filename, DateTime.Now.ToString(“yyyyMMdd_HHmmss”)))); } }

Я не мог найти подход, который подходит мне, поэтому я предлагаю свою версию. Конечно, нужен ввод, обработка ошибок.

public void Rename(string filePath, string newFileName){ var newFilePath = Path.Combine(Path.GetDirectoryName(filePath), newFileName + Path.GetExtension(filePath)); System.IO.File.Move(filePath, newFilePath);}

Когда C# не имеет какой-либо функции, я использую C++ или C:

public partial class Program{ [DllImport(“msvcrt”, CallingConvention = CallingConvention.Cdecl, SetLastError = true)] public static extern int rename( [MarshalAs(UnmanagedType.LPStr)] string oldpath, [MarshalAs(UnmanagedType.LPStr)] string newpath); static void FileRename() { while (true) { Console.Clear(); Console.Write(“Enter a folder name: “); string dir = Console.ReadLine().Trim('\') + “\”; if (string.IsNullOrWhiteSpace(dir)) break; if (!Directory.Exists(dir)) { Console.WriteLine(“{0} does not exist”, dir); continue; } string[] files = Directory.GetFiles(dir, “*.mp3”); for (int i = 0; i < files.Length; i++) { string oldName = Path.GetFileName(files[i]); int pos = oldName.IndexOfAny(new char[] { '0', '1', '2' }); if (pos == 0) continue; string newName = oldName.Substring(pos); int res = rename(files[i], dir + newName); } } Console.WriteLine("\ \tPress any key to go to main menu"); Console.ReadKey(true); }}

Источник: https://codengineering.ru/q/rename-a-file-in-c-sharp-26217

Переименовать файл в C#

C как переименовать файл

как переименовать файл с помощью C#?

System.IO.File.Move(oldNameFullPath, newNameFullPath);

можно использовать File.Move сделать это.

в файле.Метод Move, это не перезапишет файл, если он уже существует. И это вызовет исключение.

поэтому мы должны проверить, существует ли файл или нет.

/* Delete the file if exists, else no exception thrown. */ File.Delete(newFileName); // Delete the existing file if existsFile.Move(oldFileName,newFileName); // Rename the oldFileName into newFileName

или окружите его уловом try, чтобы избежать исключения.

просто добавить:

namespace System.IO{ public static class ExtendedMethod { public static void Rename(this FileInfo fileInfo, string newName) { fileInfo.MoveTo(fileInfo.Directory.FullName + “\” + newName); } }}

и потом…

FileInfo file = new FileInfo(“c:\test.txt”);file.Rename(“test2.txt”);

  1. первый вариант

    избежать System.IO.File.Move решения, размещенные здесь (отмечен ответ включен).Это не по сети. Однако шаблон копирования / удаления работает локально и по сетям. Следуйте одному из решений перемещения, но вместо этого замените его копией. Затем используйте файл.Удалить, чтобы удалить исходный файл.

    вы можете создать метод переименования, чтобы упростить его.

  2. простота использования

    используйте сборку VB в C#.Добавить ссылку на Microsoft.VisualBasic

    затем переименовать файл:

    Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(myfile, newName);

    оба являются строками. Обратите внимание, что myfile имеет полный путь. newName не делает.Например:

    a = “C:\whatever\a.txt”;b = “b.txt”;Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(a, b);

    на C:\whatever\ папка теперь будет содержать b.txt.

Вы можете скопировать его в новый файл, а затем удалить старый с помощью System.IO.File класс:

if (File.Exists(oldName)){ File.Copy(oldName, newName, true); File.Delete(oldName);}

Примечание: в этом примере кода мы открываем каталог и искать PDF-файлы с открытым и закрытым скобками в имени файла. Вы можете проверить и заменить любой символ в имени тебе нравится или просто указать новое имя, используя функцию замещения.

есть другие способы работы с этим кодом, чтобы сделать более сложные переименования, но мое главное намерение состояло в том, чтобы показать, как использовать файл.Перемещение для пакетного переименования. Это работало против 335 PDF-файлов в 180 каталогах когда я запустил его на своем ноутбуке. Это шпора кода момента, и есть более сложные способы сделать это.

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks; namespace BatchRenamer{ class Program { static void Main(string[] args) { var dirnames = Directory.GetDirectories(@”C:\the full directory path of files to rename goes here”); int i = 0; try { foreach (var dir in dirnames) { var fnames = Directory.GetFiles(dir, “*.pdf”).Select(Path.GetFileName); DirectoryInfo d = new DirectoryInfo(dir); FileInfo[] finfo = d.GetFiles(“*.pdf”); foreach (var f in fnames) { i++; Console.WriteLine(“The number of the file being renamed is: {0}”, i); if (!File.Exists(Path.Combine(dir, f.ToString().Replace(“(“, “”).Replace(“)”, “”)))) { File.Move(Path.Combine(dir, f), Path.Combine(dir, f.ToString().Replace(“(“, “”).Replace(“)”, “”))); } else { Console.WriteLine(“The file you are attempting to rename already exists! The file path is {0}.”, dir); foreach (FileInfo fi in finfo) { Console.WriteLine(“The file modify date is: {0} “, File.GetLastWriteTime(dir)); } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); } }}

использование:

Using System.IO; string oldFilePath = @”C:\OldFile.txt”; // Full path of old filestring newFilePath = @”C:ewFile.txt”; // Full path of new file if (File.Exists(newFilePath)){ File.Delete(newFilePath);}File.Move(oldFilePath, newFilePath);

надеюсь! это будет полезно для вас. 🙂

public static class FileInfoExtensions { /// /// behavior when new filename is exist. /// public enum FileExistBehavior { /// /// None: throw IOException “The destination file already exists.” /// None = 0, /// /// Replace: replace the file in the destination. /// Replace = 1, /// /// Skip: skip this file. /// Skip = 2, /// /// Rename: rename the file. ( a window behavior) /// Rename = 3 } /// /// Rename the file. /// /// the target file. /// new filename with extension. /// behavior when new filename is exist. public static void Rename(this System.IO.FileInfo fileInfo, string newFileName, FileExistBehavior fileExistBehavior = FileExistBehavior.None) { string newFileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(newFileName); string newFileNameExtension = System.IO.Path.GetExtension(newFileName); string newFilePath = System.IO.Path.Combine(fileInfo.Directory.FullName, newFileName); if (System.IO.File.Exists(newFilePath)) { switch (fileExistBehavior) { case FileExistBehavior.None: throw new System.IO.IOException(“The destination file already exists.”); case FileExistBehavior.Replace: System.IO.File.Delete(newFilePath); break; case FileExistBehavior.Rename: int dupplicate_count = 0; string newFileNameWithDupplicateIndex; string newFilePathWithDupplicateIndex; do { dupplicate_count++; newFileNameWithDupplicateIndex = newFileNameWithoutExtension + ” (” + dupplicate_count + “)” + newFileNameExtension; newFilePathWithDupplicateIndex = System.IO.Path.Combine(fileInfo.Directory.FullName, newFileNameWithDupplicateIndex); } while (System.IO.File.Exists(newFilePathWithDupplicateIndex)); newFilePath = newFilePathWithDupplicateIndex; break; case FileExistBehavior.Skip: return; } } System.IO.File.Move(fileInfo.FullName, newFilePath); } }

как использовать этот код ?

class Program { static void Main(string[] args) { string targetFile = System.IO.Path.Combine(@”D://test”, “New Text Document.txt”); string newFileName = “Foo.txt”; // full pattern System.IO.FileInfo fileInfo = new System.IO.FileInfo(targetFile); fileInfo.Rename(newFileName); // or short form new System.IO.FileInfo(targetFile).Rename(newFileName); } }

Move делает то же самое = копировать и удалять старый.

File.Move(@”C:\ScanPDF\Test.pdf”, @”C:\BackupPDF\” + string.Format(“backup-{0:yyyy-MM-dd_HH:mm:ss}.pdf”,DateTime.Now));

в моем случае я хочу, чтобы имя переименованного файла было уникальным, поэтому я добавляю к имени штамп datetime. Таким образом, имя файла журнала ” old ” всегда уникально:

if (File.Exists(clogfile)) { Int64 fileSizeInBytes = new FileInfo(clogfile).Length; if (fileSizeInBytes > 5000000) { string path = Path.GetFullPath(clogfile); string filename = Path.GetFileNameWithoutExtension(clogfile); System.IO.File.Move(clogfile, Path.Combine(path, string.Format(“{0}{1}.log”, filename, DateTime.Now.ToString(“yyyyMMdd_HHmmss”)))); } }

Я не могу найти подход, который мне подходит, поэтому я предлагаю свою версию. Конечно, нужен ввод, обработка ошибок.

public void Rename(string filePath, string newFileName){ var newFilePath = Path.Combine(Path.GetDirectoryName(filePath), newFileName + Path.GetExtension(filePath)); System.IO.File.Move(filePath, newFilePath);}

Когда C# не имеет какой-либо функции, я использую C++ или C:

public partial class Program{ [DllImport(“msvcrt”, CallingConvention = CallingConvention.Cdecl, SetLastError = true)] public static extern int rename( [MarshalAs(UnmanagedType.LPStr)] string oldpath, [MarshalAs(UnmanagedType.LPStr)] string newpath); static void FileRename() { while (true) { Console.Clear(); Console.Write(“Enter a folder name: “); string dir = Console.ReadLine().Trim('\') + “\”; if (string.IsNullOrWhiteSpace(dir)) break; if (!Directory.Exists(dir)) { Console.WriteLine(“{0} does not exist”, dir); continue; } string[] files = Directory.GetFiles(dir, “*.mp3”); for (int i = 0; i < files.Length; i++) { string oldName = Path.GetFileName(files[i]); int pos = oldName.IndexOfAny(new char[] { '0', '1', '2' }); if (pos == 0) continue; string newName = oldName.Substring(pos); int res = rename(files[i], dir + newName); } } Console.WriteLine("\ \tPress any key to go to main menu"); Console.ReadKey(true); }}

Источник: https://askdev.ru/q/pereimenovat-fayl-v-c-1953/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.