使用AlphaFS模块在超260字符路径下创建文件报错求助
问题分析与解决
错误原因
你遇到的错误核心是调用AlphaFS的File.Create方法时参数顺序完全错误:
[Alphaleonis.Win32.Filesystem.File]::Create()的第一个参数要求是完整的文件路径,第二个参数是可选的缓冲区大小(整数类型)。- 你把文件名
'test.txt'作为第一个参数,文件夹路径作为第二个参数,导致PowerShell试图将路径字符串强制转换为整数(缓冲区大小),直接触发类型转换失败错误。
另外,原脚本的路径构建逻辑也有问题:循环里每次都会重置$folderTree = 'c:\',最终只会得到c:\test60\,前面的test1到test59都不会被追加进去。
原错误信息
Cannot convert argument "bufferSize", with value: "c:\test1\test2\test3\test4\test5\test6\test7\test8\test9\test10\test11\test12\test13\test14\test15\test16\test17\test18\test19\test20\test21\test22\test23\test24\test25\test26\test27\test28\test29\test30\test31\test32\test33\test34\test35\test36\test37\test38\test39\test40\test41\test42\test43\test44\test45\test46\test47\test48\test49\test50\test51\test52\test53\test54\test55\test56\test57\test58\test59\test60", for "Create" to type "System.Int32": "Cannot convert value "c:\test1\test2\test3\test4\test5\test6\test7\test8\test9\test10\test11\test12\test13\test14\test15\test16\test17\test18\test19\test20\test21\test22\test23\test24\test25\test26\test27\test28\test29\test30\test31\test32\test33\test34\test35\test36\test37\test38\test39\test40\test41\test42\test43\test44\test45\test46\test47\test48\test49\test50\test51\test52\test53\test54\test55\test56\test57\test58\test59\test60" to type "System.Int32". Error: "Input string was not in a correct format."" At line:1 char:1 + [Alphaleonis.Win32.Filesystem.File]::Create('test.txt ',$folderTree) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodException + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
原脚本
1..60 | foreach {$folderTree = 'c:\'} {$folderTree += "test$_\"} [Alphaleonis.Win32.Filesystem.Directory]::CreateDirectory($folderTree) [Alphaleonis.Win32.Filesystem.File]::Create('test.txt ',$folderTree)
修正后的脚本
步骤1:正确构建超长路径
# 初始化根路径,避免循环内重复重置 $folderTree = 'c:\' # 循环追加所有子文件夹 1..60 | ForEach-Object { $folderTree += "test$_\" } # 创建超长路径文件夹 [Alphaleonis.Win32.Filesystem.Directory]::CreateDirectory($folderTree)
步骤2:在目标路径创建文件
# 拼接完整的文件路径 $filePath = Join-Path -Path $folderTree -ChildPath 'test.txt' # 调用AlphaFS创建文件(第二个参数可选,默认使用系统缓冲区大小) [Alphaleonis.Win32.Filesystem.File]::Create($filePath) # 若需指定缓冲区大小(比如4096字节),可写为: # [Alphaleonis.Win32.Filesystem.File]::Create($filePath, 4096)
关键修正点
- 路径构建逻辑:将
$folderTree = 'c:\'移到循环外,确保所有子文件夹都能被依次追加,生成完整的超长路径。 - 文件创建参数:用
Join-Path拼接出完整的文件路径,作为Create方法的第一个参数,完全匹配AlphaFS的方法定义,避免类型转换错误。
内容的提问来源于stack exchange,提问作者Arbelac
相关产品推荐
相关产品推荐

