【发布时间】:2016-06-21 16:49:33
【问题描述】:
我们有一个 .net 程序,它基本上将文件从一个文件夹复制到另一个文件夹,并且通常在复制过程中更改文件的名称。客户使用 DOS 样式通配符提供要复制的文件名和目标文件名。
例如:
来源:*.log 目标:*.txt
将 aa.log 复制到 aa.txt ,将 bb2.1.log 复制到 bb2.1.txt 等
或
来源:abc*.csv 目标:KK*_123.csv
将 abcxyz.csv 复制到 KKabcxyz_123.csv,将 abc1722.mm.csv 复制到 KKabc1722.mm_123.csv
如何在 C# 或 VB.net 中实现这种复制/重命名?
File.Copy(SourceFile, TargetFile )不支持文件名中的通配符(*,?),所以问题可能是,如何生成目标文件名?
PS 如果绝对有必要,我可以对源/目标文件名实施一些限制,但我想避免它。
PPS 如有必要,该过程可以分为单独的部分。 示例 #2:来源:abc*.csv 目标:KK*_123.csv
可以替换为
来源:abc*.csv 目标:KK*.csv
和 来源:KK*.csv 目标:*_123.csv
.
【问题讨论】:
-
如果源是 abc*.csv 而目标是 xyz*_123.csv 那么是否应该将 abcxyz.csv 复制到 xyzxyz_123.csv 而不是 abcxyz_123.csv?
-
你是对的。我解决了我的问题。实际上,此示例中预期的目标文件名应该是 xyzabcxyz_123.csv.,即它只是在文件名的开头添加“xyz”并在文件扩展名前添加“_123”