c/vc++如何開啟長檔名的檔案
概述
最近本人在操作檔案的時候,碰到了長檔名,即絕對路徑+檔名總長度大於等於260位元組,這些長檔名直接使用fopen會失敗的。
本文舉例描述了,怎麼樣成功首席執行官檔名fopen,從而順利讀寫、建立等檔案操作,滿足了大部分檔案操作的需要。
編譯環境
vs2010
讀操作
orgfilename為長檔名
file*
openlongnamefileread
(char
* orgfilename)if(
strlen
(orgfilename)
<
260)
strcpy
(tmpbuf,
"\\\\?\\");
strcat
(tmpbuf, orgfilename)
;memset
(infilebuf,0,
sizeof
(infilebuf));
/* getshortpathname函式執行成功的前提是orgfilename檔案存在,否則infilebuf內容不會變 */
getshortpathname
(tmpbuf, infilebuf,
sizeof
(infilebuf)-1
);if(
strlen
(infilebuf)
<=0)
pfile =
fopen
(infilebuf,
"rb");
exit_fun:
return pfile;
}
寫、建立操作
orgfilename為長檔名
file*
openlongnamefilewrite
(char
* orgfilename)if(
strlen
(orgfilename)
<
260)
strcpy
(infilebuf,
"\\\\?\\");
strcat
(infilebuf, orgfilename)
; pfile =
fopen
(infilebuf,
"wb");
exit_fun:
return pfile;
}
小結
有了正常檔案控制代碼指標file*之後,就可以像一般操作檔案那樣,ftell、fseek、fread、fwrite等。
本**根據網上收集的資料和本人的探索,本**片段經vs2010測試沒有問題的。希望能夠幫到各位同行。
Windows刪除長檔名檔案
windows server 2003存在長檔名檔案問題,例如用ftp上傳了乙個檔名超過1024位元組長度的檔案,然後無法刪除。參考以下步驟 1.查詢要刪的檔案,獲取短檔名 d checkpointbeforemove dir x f1fj03 驅動器 d 中的卷是 新加捲 卷的序列號是 8869 ...
FATFS Fatfs讀目錄支援長檔名
背景 在使用fatfs檔案系統的時候,發現檔名一旦超出8.3這格式的時候,就會出現亂碼的現象。分析 經過查詢後發現,8.3格式就是短檔名的命名格式,8是指檔名或目錄名的主體部分小於等於8個字元,3是指檔名或目錄名的擴充套件部分小於等於3個字元中間以.作為分割,即類似88888888.333類似的檔案...
拿檔名 如何批量修改檔名
在工作和生活中,我們經常需要將許多檔案命名為固定格式,如果需要重新命名的檔案數量龐大,那重新命名將會變成一件非常枯燥繁瑣費時的工作,今天在這裡分享乙個批量修改檔名的 希望對大家有所幫助,就算是數百個檔名,也就幾秒鐘完事。先貼上 文字框內下滑可以複製完整內容哦 address r d 中銀國際實習 r...