【问题标题】:Rename directory using save filedialog filename使用保存文件对话框文件名重命名目录
【发布时间】:2011-07-26 19:15:46
【问题描述】:

我在此路径中有一个文件夹 C:\Users\XXX\Desktop\Original\XXX\bin\Debug\Backup

当我使用“XXX”名称保存我的项目时,我需要使用该保存文件对话框名称更改备份文件夹,并且它不应该覆盖它。

谁能建议我如何做到这一点:

这是我的代码,但它对我不起作用:

Private Sub SaveProject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 SaveProject.Click

    Using sfdlg As New Windows.Forms.SaveFileDialog
        sfdlg.OverwritePrompt = True
        sfdlg.InitialDirectory = "C:\"
        sfdlg.FileName = "Untitled"
        sfdlg.DefaultExt = "amk"
        sfdlg.Filter = "AquaMark Project|*.amk"
        If sfdlg.ShowDialog = Windows.Forms.DialogResult.OK Then


            Dim SaveData As New gCanvasData

            With SaveData
                frmDisplay.GCanvas1.UnselectCurrentAnotate()
                .gAnnotates = frmDisplay.GCanvas1.gAnnotates
                .Image = frmDisplay.GCanvas1.Image

            End With

            Using objStreamWriter As New StreamWriter(sfdlg.FileName)
                Dim x As New XmlSerializer(GetType(gCanvasData))
                x.Serialize(objStreamWriter, SaveData)
                objStreamWriter.Close()
            End Using
        End If
        sfdlg.Dispose()
        System.IO.Path.GetFileNameWithoutExtension(sfdlg.FileName)
        IO.Directory.Move(Application.StartupPath + "\Backup\", Application.StartupPath + "\Backup\" & System.IO.Path.GetFileNameWithoutExtension(sfdlg.FileName))
    End Using
End Sub

但是谁能清楚地告诉我该怎么做?

【问题讨论】:

  • 不工作怎么办?没有重命名文件夹?抛出错误?将文件夹命名为与您预期不同的名称?告诉我们“它对我不起作用”就像把你的车带到修理工那里说“我的车不会跑”然后让他修理它......
  • 我修改了我的代码,你现在可以检查一下并解决它。

标签: vb.net directory rename


【解决方案1】:

根据错误,您很可能无法通过相同的 SaveFileDialog 保存文件并更改备份文件夹名称。

分为两步:

  1. 通过 SaveFileDialog 保存文件。请务必从 SaveFileDialog 捕获文件名,以便在第 2 步中使用它,因为关闭 SaveFileDialog 窗口后它可能超出范围。
  2. 使用上述命令重命名备份文件夹,但您关闭了 SaveFileDialog 以便释放句柄。

编辑

正如我在第 1 步中提到的,您需要将文件名保存在某处,以便在第 2 步中使用它。

Private Sub SaveProject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveProject.Click

   ' Set up a variable to hold the filenam
   Dim fileName As String

    Using sfdlg As New Windows.Forms.SaveFileDialog
        sfdlg.OverwritePrompt = True
        sfdlg.InitialDirectory = "C:\"         
        sfdlg.FileName = "Untitled"         
        sfdlg.DefaultExt = "amk"         
        sfdlg.Filter = "AquaMark Project|*.amk"         

        If sfdlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim SaveData As New gCanvasData 

            ' Store the filename from the SaveFileDialog
            fileName = sfdlg.FileName             

            With SaveData                 
                frmDisplay.GCanvas1.UnselectCurrentAnotate()                 
                .gAnnotates = frmDisplay.GCanvas1.gAnnotates                 
                .Image = frmDisplay.GCanvas1.Image              
            End With              

            Using objStreamWriter As New StreamWriter(sfdlg.FileName)                 
                Dim x As New XmlSerializer(GetType(gCanvasData)) 
                x.Serialize(objStreamWriter, SaveData)     
                objStreamWriter.Close()             
            End Using         
        End If         

        'Calling Dispose is redundant since sfdlg was in a Using block
        'sfdlg.Dispose()         
        ' You can't use sfdlg.FileName here as the object is out of scope
        'System.IO.Path.GetFileNameWithoutExtension(sfdlg.FileName)
        'IO.Directory.Move(Application.StartupPath + "\Backup\", Application.StartupPath + "\Backup\" & System.IO.Path.GetFileNameWithoutExtension(sfdlg.FileName)) 
         ' Use the value in fileName from above
         System.IO.Directory.Move(Application.StartupPath + "\Backup\", Application.StartupPath + "\Backup\" & System.IO.Path.GetFileNameWithoutExtension(fileName))    
    End Using 
End Sub

【讨论】:

  • 现在如果我这样做了,我会得到这个异常:Argument 'newName' must be a name, and not a relative or absolute path:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2017-10-22
  • 2013-12-05
相关资源
最近更新 更多