【急!】fopen和CFile::Open所能打开的文件的绝对路径最长是多少?

ylyan20xx 2016-01-13 06:21:57
我的工具需要读取公司服务器上存放的文件,但近来发现有些文件因路径过长导致我的工具访问失败,用fopen和CFile::Open都失败,GetLastError的值都是3(系统找不到指定的路径),请问有什么办法解决?谢谢!
PS. 打开记事本,将服务器文件拖入,是可以读取的,它是如何做到的?
谢谢!(很久没来坛里了,全部分给出,很可怜,望海涵)
...全文
227 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2016-01-18
引用 4 楼 ylyan20xx 的回复:
@ zhao4zhong1
为什么不先将drivefullpathfilename.ext拆成 drivefullpath和filename.ext 再 _chdir(drivefullpath); 然后 fp=fopen(filename.ext,...); 呢?
回复
Magic丶旭 2016-01-15
转成8.3文件格式 好像是GetShortFileName还是GetShortPathName
回复
paschen 2016-01-14
在WINDOWS上,这些函数最张都会调用API CreateFile https://msdn.microsoft.com/en-us/library/aa363858.aspx 注意以下内容 Parameters lpFileName [in] The name of the file or device to be created or opened. You may use either forward slashes (/) or backslashes (\) in this name. In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming Files, Paths, and Namespaces. For information on special device names, see Defining an MS-DOS Device Name.
回复
ylyan20xx 2016-01-14
引用 7 楼 lx624909677 的回复:
那就用相对路径
感谢答复! 我的exe只能放在本地运行去访问服务器路径,不过经由5楼网友提醒,我先设置SetCurrentDirectory到服务器一个目录,然后用相对路径是可以了。
回复
lx624909677 2016-01-14
那就用相对路径
回复
zgl7903 2016-01-14
对 CreateFile MSDN 上有这样的说明 In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming Files, Paths, and Namespaces.
回复
ylyan20xx 2016-01-13
引用 5 楼 meryal 的回复:
路径的话切换目录试试
感谢答复!可否详述?我还没听过这个方法。谢谢!
回复
meryal 2016-01-13
路径的话切换目录试试
回复
ylyan20xx 2016-01-13
@ zhao4zhong1
回复
ylyan20xx 2016-01-13
我必须说他们把路径搞得太长了,strlen(filePath)的值是262,但实际摆在面前的问题是,我如何想办法克服这个困难,而不是叫他们改。
回复
ylyan20xx 2016-01-13
引用 1 楼 lx624909677 的回复:
MAX_PATH宏定义的大小(260),你要读的文件的位置是什么
感谢答复! MAX_PATH我知道,在代码中我也一直是这样写的,但出了问题后,我做测试的代码是这样写的: char* filePath = "xxx"; FILE* fp = fopen(filePath, "r"); 而fp得到的是0x00000000
回复
lx624909677 2016-01-13
MAX_PATH宏定义的大小(260),你要读的文件的位置是什么
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2016-01-13 06:21
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……