【问题标题】:Ruby Shoes App with two buttons to give a file either Name "A" or Name "B"Ruby Shoes App 带有两个按钮,可以为文件提供名称“A”或名称“B”
【发布时间】:2016-03-11 20:46:48
【问题描述】:

假设我的 C: 上有一个文件 a.txt

当我按下 gui 中的第一个按钮时,我想将 C:\a.txt 重命名为 c:\xyz_a.txt

当我在 gui 中按下按钮 2 时,我想将文件重命名为 c:\a.txt

你会如何用红宝石鞋做到这一点?任何提示都会非常有用。

【问题讨论】:

  • 您是否在使用 Ruby 重命名文件或处理鞋子应用程序中的按钮点击时遇到问题?
  • 我在用 ruby​​ 重命名文件时遇到问题。
  • 它说明了这一点,但我如何添加路径:rename(old_name, new_name) → 0 将给定文件重命名为新名称。如果无法重命名文件,则引发 SystemCallError。 File.rename("afile", "afile.bak") #=> 0

标签: ruby file rename shoes


【解决方案1】:

这是一个鞋子应用程序,它有两个按钮可以来回重命名文件。

Shoes.app {

    file_orig = "E:/abc.txt"
    file_renamed = "E:/xyz_a.txt"

    stack do 
        @push_1 = button "Rename"
        @push_2 = button "Rename back"
        @note = para ""
    end

    @push_1.click {
        begin
            File.rename(file_orig, file_renamed) 
            @note.replace "File #{file_orig} renamed to #{file_renamed}"
        rescue => e
            @note.replace "Error while renaming #{file_orig} : #{e.message}"
        end
    }
    @push_2.click {
        begin
            File.rename(file_renamed, file_orig)
            @note.replace "File #{file_renamed} renamed BACK to #{file_orig}"
        rescue => e
            @note.replace "Error while renaming #{file_renamed} : #{e.message}"
        end
    }
}

请注意,我的示例使用来自E 驱动器的文件。要重命名C 驱动器中的文件,通常需要管理员权限。您可能会收到如下错误:rename': Permission denied @ sys_fail2 - (C:/abc.txt, C:/xyz_a.txt) (Errno::EACCES)

要为您的鞋子应用程序授予管理员权限,您可以使用Run as administrator 选项启动命令行窗口(右键单击应用程序列表中的命令图标并选择Run as administrator),然后从该命令窗口运行鞋子应用程序使用shoes app.rb

【讨论】:

  • 问题确实是 C:\ 的权限。很抱歉这个愚蠢的问题:)
【解决方案2】:

这是另一个简单的解决方案。

文件夹为 C:\Test\,文件名为 A.txt,将通过按钮 1 重命名为 INACTIVE_A.txt,然后通过按钮 2 重命名为 A.txt。

Shoes.app do
  stack do 
    button "Rename A.txt to INACTIVE_A.txt" do 
      Dir.chdir("C:/Test")
      File.rename("A.txt", "INACTIVE_A.txt")
    end 
    button "Rename INACTIVE_A.txt to A.txt" do 
      Dir.chdir("C:/Test")
      File.rename("INACTIVE_A.txt", "A.txt")
    end  
  end

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多