ruby - 使用 Ruby File.open 写入具有长文件名的外部文件
问题描述
当我尝试将 Ruby v2.3.3 中的文件写入 Windows 上的文件夹时出现错误。
这是我以前多次使用过的代码,并且运行良好。
File.open(file_name, "w+") { |out| out.puts "Hello" }
这适用于短文件名,但显然失败了大约 200 个字符的文件名(包括文件夹路径)。我得到的错误是文件或文件夹不存在。该方法是创建文件,因此它显然不需要事先存在。而且该文件夹确实存在——我测试了很多次。所以我不明白错误信息。
我尝试使用较短的文件名运行它,然后它运行良好。
有没有办法解决这个错误?这真的是 Ruby 错误,还是更像是 Windows 限制?
解决方案
Windows 中路径的长度有一个硬性限制,大约为 260 个字符:
在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为
MAX_PATH
,定义为 260 个字符。
每个操作系统都有某种限制,以允许 C 程序分配适当长度的缓冲区。PATH_MAX
因操作系统而异,但通常在 255-1024 范围内。
这个问题更详细地说明了与 Windows 相关的此类事物的含义。
推荐阅读
- android - Flutter Dart - 如何将数据从一个类获取到另一个类
- ios - 从横向视图控制器转到纵向时,supportedInterfaceOrientations 不强制纵向
- email - 如何删除我的电子邮件中对 Twilio 的引用?
- java - 如何将字符推入字符串堆栈?
- weka - 如何通过结合 Weka 中现有的 2 个属性来创建新属性?
- c++ - getline 似乎没有像我预期的那样工作(C++)
- batch-file - 批量搜索、查找和删除目录、子目录和文件?
- reactjs - 在功能组件中的成功回调期间,箭头函数不起作用
- c - MSVC:是否可以启用特定的语言扩展(即不是一次全部)?
- json - jq 中的 `in` 运算符。但是,它不像我想要的那样工作