ios和android(還有linux)都是檔名大小寫敏感的,windows是大小寫不敏感的。
這樣遊戲開發的時候就會出現這樣的問題,windows下測試正常的遊戲(包括mac下的ios模擬器執行正常的遊戲,因為mac系統也是檔名大小寫不敏感的),放到實際裝置上執行可能各種崩潰。其中十有**是配置檔名和實際檔名不匹配造成的。
解決方法有:
1、所有資源檔名轉小寫(通過指令碼刷一下),然後讀取檔案的函式裡同樣把傳入的檔名轉小寫,這樣就可以保證一致了。
2、資源打包(但是又不僅僅是zip壓縮,因為zip讀取檔案是大小寫敏感的),比如我封裝的乙個資源包格式是大小寫無關的,這樣同樣可以保證能夠找到正確的檔案。
3、使用下面的**檢測傳入的檔名和實際檔名是否一致。這樣在windows下也可以檢測出大小寫不匹配的情況,及時進行修正。
[cpp]view plain
copy
bool
checkfilename(
const
char
* pszfilename)
} if(currentpath.empty())
win32_find_dataa ffd;
handle
hfind = findfirstfilea(currentpath.c_str(), &ffd);
//檔名支援中文unicode
realoutput += ffd.cfilename;
if(i != outputdirs.size() - 1)
} if
(realoutput != inputfilename) ;
snprintf(msg, sizeof
(msg),
"in config:%s real path:%s"
, inputfilename.c_str(), realoutput.c_str());
ccmessagebox(msg, "file name error"
);
} #endif
return
true
; }
通過findfirstfile可以查詢任意檔案或資料夾是否存在,並且返回的檔案資訊裡面會有當前檔案的真實檔名(但是不包含路徑資訊)。原本我是想通過檔案控制代碼獲取到實際檔案路徑,不過google了下發現比較麻煩而且還需要用到驅動開發的sdk。 所以換了個思路,根據傳入的檔名路徑,乙個乙個分段查詢到真實檔名(路徑名),把這些真實檔名拼接起來就是實際檔名了(大小寫與磁碟上的真實路徑相同),然後比較傳入和返回的兩個路徑是否一致,就可以知道檔名大小寫是否匹配了。
Ubuntu下Windows檔名亂碼
把一些windows上建立的檔案傳送到ubuntu後,這些檔案 資料夾 壓縮包等 的檔名會亂碼,原因為windows下的檔名以gbk編碼,而ubuntu下的檔案 名為utf 8編碼。convmv就是更改檔名編碼方式的乙個工具。比如 sudo convmv f gbk t utf 8 r notest...
windows批量修改檔名或去掉檔名中的字串
複製下面 到乙個txt文字中,將字尾名修改為bat,雙擊執行即可。操作方式如下圖 這裡我去掉了新建兩個字。注意編碼問題,如果開啟是亂碼,請先檢視cmd的屬性,然後將文字儲存為對應字元編碼。複製下方 echo off set p str1 請輸入要替換的檔案 資料夾 名字串 可替換空格 set p s...
拿檔名 如何批量修改檔名
在工作和生活中,我們經常需要將許多檔案命名為固定格式,如果需要重新命名的檔案數量龐大,那重新命名將會變成一件非常枯燥繁瑣費時的工作,今天在這裡分享乙個批量修改檔名的 希望對大家有所幫助,就算是數百個檔名,也就幾秒鐘完事。先貼上 文字框內下滑可以複製完整內容哦 address r d 中銀國際實習 r...