首页 > 解决方案 > 使用 Ruby File.open 写入具有长文件名的外部文件

问题描述

当我尝试将 Ruby v2.3.3 中的文件写入 Windows 上的文件夹时出现错误。

这是我以前多次使用过的代码,并且运行良好。

File.open(file_name, "w+") { |out| out.puts "Hello" }

这适用于短文件名,但显然失败了大约 200 个字符的文件名(包括文件夹路径)。我得到的错误是文件或文件夹不存在。该方法是创建文件,因此它显然不需要事先存在。而且该文件夹确实存在——我测试了很多次。所以我不明白错误信息。

我尝试使用较短的文件名运行它,然后它运行良好。

有没有办法解决这个错误?这真的是 Ruby 错误,还是更像是 Windows 限制?

标签: rubywindowsfile

解决方案


Windows 中路径的长度有一个硬性限制,大约为 260 个字符:

在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为MAX_PATH,定义为 260 个字符。

每个操作系统都有某种限制,以允许 C 程序分配适当长度的缓冲区。PATH_MAX因操作系统而异,但通常在 255-1024 范围内。

这个问题更详细地说明了与 Windows 相关的此类事物的含义。


推荐阅读