可能是一个简单的问题,但我可以;弄清楚如何去做。我试图实现的是,如果文件存在,我想用(x)创建文件。例如,myfile.csv存在然后创建myfile.csv(1)如果存在create myfile.csv(2),依此类推。到目前为止我所做的是:
Dim filename As String = "C:\file.csv"
If IO.File.Exists(filename) Then
filename = filename & "(1)" '"C:\file.csv(1)"
If IO.File.Exists(filename) Then
'C:\file.csv(2)
'...
End If
End If
新代码:
Private Function SeachAndCreate(filePath As String) As String
If File.Exists(filePath) Then
Dim folderPath = Path.GetDirectoryName(filePath)
Dim fileName = Path.GetFileNameWithoutExtension(filePath)
Dim extension = Path.GetExtension(filePath)
Dim fileNumber = 0
Do
fileNumber += 1
filePath = Path.Combine(folderPath,
String.Format("{0}_({1}){2}",
fileName,
fileNumber,
extension))
Loop While File.Exists(filePath)
File.Create(filePath)
End If
Return filePath
End Function
答案 0 :(得分:0)
使用while
语句,filename = filename & "(" & cnt & ")"
。
为什么不归档(1).csv?
答案 1 :(得分:0)
增加实际文件名而不是扩展名更有意义(至少对我而言)。所以,file.csv
,file(1).csv
,file(2).csv
等等。
无论哪种方式,你都可以循环执行此操作。
Dim fileName As String = "C:\file"
Dim fileExtension As String = ".csv"
Dim fileNumber As Integer = 1
Do
If Not (IO.File.Exists(fileName & "(" & fileNumber.ToString & ")" & fileExtension) Then
'The file does not exist, do something..
Exit Do
Else
'The file does exist, so increment and try the next one
fileNumber = fileNumber + 1
End If
Loop
请注意,这不会检查是否存在没有数字的文件(例如,file.csv
)。我会留下那部分给你。