我正在用c#编写我的第一个Cocoa应用程序,它假设在文件名的乞求时附加/添加数字。
用户只提供文件夹的路径(例如音乐),对于文件夹中包含的每个文件,程序假设添加递增的数字,如
001_(old_fileName),
002_(old_fileName),
...,
092_(old_fileName)
etc,
直到给定文件夹中的文件结尾(按路径)。
无法拆分文件名,导致文件名未知(甚至可能包含数字本身)。我已经尝试了几种可能的选择来解决这个问题,但是没有一个可行。发现很少有人在c#中更改名称时已经提出了问题,但结果中的非实际帮助了我。
下面的代码是我目前得到的其余部分,所有非工作尝试都先被评论,后来被删除。通过NSAlert我看到文件夹中每个文件的路径/名称作为帮助。我很乐意接受帮助
void RenameFunction()
{
string sPath = _Path_textBox.StringValue;
if (Directory.Exists(sPath))
{
var txtFiles = Directory.EnumerateFiles(sPath);
var txt2Files = Directory.GetFiles((sPath));
string fileNameOnly = Path.GetFileNameWithoutExtension(sPath);
string extension = Path.GetExtension(sPath);
string path = Path.GetDirectoryName(sPath);
string newFullPath = sPath;
int count = 1;
while (File.Exists(sPath))//newFullPath))
{
string tempFileName = string.Format(count + "_" + fileNameOnly + sPath);
//count++;
//string.Format("{0}{0}{0}{1}", fileNameOnly, count++);
newFullPath = Path.Combine(path, extension + tempFileName);
count++;
}
string[] fileEntities = Directory.GetFiles(newFullPath); //GetFileSystemEntries(sPath);//GetFiles(sPath);
//foreach (var _songName in fileEntities)
//{
// string tempFileName = count + "_" + fileNameOnly + sPath;
// //string.Format("{0}{0}{0}{1}", fileNameOnly, count++);
// newFullPath = Path.Combine(sPath ,extension + tempFileName);
// File.Move(sPath, newFullPath);
//}
foreach (var _songName in fileEntities)
{
AmountofFiles(_songName);
}
}
}
void AmountofFiles(string path)
{
var alert2 = new NSAlert();
alert2.MessageText = "mp3";
alert2.InformativeText = "AMOUNT OF MP3 FILES IS '{1}' : " + path;
alert2.RunModal();
}
答案 0 :(得分:0)
您尝试使用File.Move吗?只需将文件移动到相同的路径,但另一个名称
File.Move("NameToBeRename.jpg","NewName.jpg");
答案 1 :(得分:0)
您分享的代码有很多不合适的地方。想要实现的东西可以用非常简单的方法实现。
您需要做的就是从目录中检索包含完整路径的所有文件名,然后逐个重命名。
按照以下代码演示上述方法。
// Path of the directory.
var directroy = _Path_textBox.StringValue;
if (Directory.Exists(directroy))
{
//Get all the filenames with full path from the directory.
var filePaths = Directory.EnumerateFiles(directroy);
//Variable to append number in front of the file name.
var count = 1;
//Iterate thru all the file names
foreach (var filePath in filePaths)
{
//Get only file name from the full file path.
var fileName = Path.GetFileName(filePath);
//Create new path with the directory path and new file name.
var destLocation = Path.Combine(directory, count + fileName);
//User File.Move to move file to the same directory with new name.
File.Move(filePath, destLocation);
//Increment count.
count++;
}
}
我希望这可以帮助您解决问题。