在旧版本的windows中,我知道文件或文件夹的最大长度大约为250个字符,有人知道他们是否在windows 10中更改了它吗?
编辑:
我在给定API周围做一些Java代码来提取一个应用程序的一些内容,将是几千个文件,并且我对可能发生的事情有点担心,因为我不知道文件名和路径将是什么样子,所以我将尝试防止这些错误,或者可能在Java中更改名称。保存(但最好保留原始名称)
那么你知道会不会有一些豁免?File file = new File(jsonFile);?谢谢,我可以在接球的时候治疗
最佳答案
如果你真的是指文件名,我相信限制仍然是“通常”255个字符,请参阅下面的第三个引用段落(“WindowsAPI有很多…”)。
如果您是指文件路径:您可以启用“win32长路径”选项。从AA>
最大路径长度限制
在windows api中(除了以下段落中讨论的一些例外),路径的最大长度是max_path,它定义为260个字符。本地路径的结构顺序如下:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件和终止的空字符。例如,驱动器d上的最大路径为“D:\some 256-character path string<NUL>”,其中“<NUL>”表示当前系统代码页的不可见终止空字符。(此处使用字符<>是为了视觉清晰,不能是有效路径字符串的一部分。)
注释
Windows API中的文件I/O函数将“/”转换为“\”,作为将名称转换为NT样式名称的一部分,除非使用“\\?\”前缀,如以下各节所述。
windows api有许多函数也有unicode版本,允许最大总路径长度为32767个字符的扩展路径。这种类型的路径由由反斜杠分隔的组件组成,每个组件都不超过getvolumeinformation函数的lpmaximumcomponentlength参数中返回的值(该值通常为255个字符)。要指定扩展长度路径,请使用“\\?\”前缀。例如,“\\?\D:\very long path”。
注释
最大路径为32767个字符,这是近似值,因为系统可以在运行时将“\\?\”前缀扩展为更长的字符串,并且此扩展适用于总长度。
前缀“\\?\”也可用于根据通用命名约定(unc)构造的路径。要使用unc指定这样的路径,请使用“\\?\UNC\”前缀。例如,“\\?\UNC\server\share”,其中“server”是计算机的名称,“share”是共享文件夹的名称。这些前缀不作为路径本身的一部分使用。它们表示路径应该以最小的修改传递给系统,这意味着您不能使用正斜杠表示路径分隔符,也不能使用句点表示当前目录,也不能使用双点表示父目录。由于不能将“\\?\”前缀与相对路径一起使用,相对路径始终限制为最多路径字符的总数。
对于windows文件i/o api函数使用的路径和文件名字符串,不需要执行任何unicode规范化,因为文件系统将路径和文件名视为wchars的不透明序列。应用程序所需的任何规范化都应在执行时考虑到这一点,即对相关windows文件i/o api函数的任何调用的外部。
使用api创建目录时,指定的路径不能太长,以致于不能附加8.3文件名(即目录名不能超过max_path减12)。
shell和文件系统有不同的要求。可以使用windows api创建shell用户界面无法正确解释的路径。
在Windows 10、1607及更高版本中启用长路径
从Windows 10 1607版开始,已从常见的win32文件和目录函数中删除了最大路径限制。但是,您必须选择新的行为。
要启用新的长路径行为,必须满足以下两个条件:
注册表项HKLM\SYSTEM\CurrentControlSet\Control\FileSystemLongPathsEnabled(类型:reg_dword)必须存在并设置为1。在第一次调用受影响的win32文件或目录函数后,系统(每个进程)将缓存密钥的值(有关函数列表,请参阅下面的内容)。在进程的生存期内,不会重新加载注册表项。为了使系统上的所有应用程序都能识别密钥的值,可能需要重新启动,因为某些进程可能在设置密钥之前已启动。
注释
此注册表项也可以通过位于“计算机配置>管理模板>系统>文件系统>启用NTFS长路径”的组策略进行控制。
应用程序清单还必须包含longPathAware元素。
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings xmlns:ws2="https://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</windowsSettings>
</application>
关于java - Windows 10中的最大文件名长度是多少? Java会尝试/捕获会低谷exeption? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57807466/
在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
在Ruby1.9.3(可能还有更早的版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法会给我某些结果。我得到的结果似乎与我的预期相反。这是一个例子:"abcabc".split("b")#=>["a","ca","c"]"abcabc".split("a")#=>["","bc","bc"]"abcabc".split("c")#=>["ab","ab"]在这里,第一个示例返回的正是我所期望的。但在第二个示例中,我很困惑为什么#split返回零长度字符串作为返回数组的第一个值。这是什么原因呢?这是我所期望的:"abcabc".split("a")#=>["bc"
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht