cocos creator基礎-(二十五)FileUtils本地文件讀寫


1: 掌握jsb.fileUtils的基本使用;
 
FileUtils
 
API   CCFileUtils.h
 
1:jsb是javascript bind的代表,整個C/C++ 導出的綁定都在這個jsb里面,jsb 支持native,不支持h5(瀏覽器上無法運行jsb is not defined );
2: FileUtils是本地文件讀寫的一個工具類,全局只有一個實例;
3: jsb.fileUtils來獲取文件讀寫工具類的實例;
4: jsb.fileUtils.isDirectoryExist(path): 判斷路徑是否存在;
5: jsb.fileUtils.createDirectory(path); 創建一個路徑;
6: jsb.fileUtils.getDataFromFile(path)獲取二進制數據; // Uint8Array文本
7: jsb.fileUtils.writeDataToFile(data,path); 寫二進制數據; // Uint8Array 對象
8: jsb.fileUtils.writeStringToFile(data,path); 寫文本文件; // data String對象
9: jsb.fileUtils.getStringFromFile(path); 獲取文本數據; // data String
9: jsb.fileUtils.removeFile(path); 刪除掉一個文件;
10: jsb.fileUtils.getWritablePath(); 獲取文件的可寫目錄,是一個內部存儲的目錄,我們的手機OS會為每個APP分配一個可讀寫的路徑,但是這個App如果卸載以后,這個數據也會被刪除;
  如果你要想保存到本地有又是持久的,你可以寫入外部存儲,外部存儲的這個路徑也是適用於fileUtils工具類的;
 
cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //    default: null,      // The default value will be used only when the component attaching
        //                           to a node for the first time
        //    url: cc.Texture2D,  // optional, default is typeof default
        //    serializable: true, // optional, default is true
        //    visible: true,      // optional, default is true
        //    displayName: 'Foo', // optional
        //    readonly: false,    // optional, default is false
        // },
        // ...
    },

    // use this for initialization
    onLoad: function () {
        // jsb.fileUtils獲取全局的工具類的實例, cc.director;
        // 如果是在電腦的模擬器上,就會是安裝路徑下模擬器的位置;
        // 如果是手機上,那么就是手機OS為這個APP分配的可以讀寫的路徑; 
        // jsb --> javascript binding --> jsb是不支持h5的
        var writeable_path = jsb.fileUtils.getWritablePath();
        console.log(writeable_path);


        // 要在可寫的路徑先創建一個文件夾
        var new_dir = writeable_path + "new_dir";
        // 路徑也可以是 外部存儲的路徑,只要你有可寫外部存儲的權限;
        // getWritablePath這個路徑下,會隨着我們的程序卸載而刪除,外部存儲除非你自己刪除,否者的話,卸載APP數據還在;
        if(!jsb.fileUtils.isDirectoryExist(new_dir)) {
            jsb.fileUtils.createDirectory(new_dir);
        }
        else {
            console.log("dir is exist!!!");
        }
        
        // 讀寫文件我們分兩種,文本文件, 二進制文件;
        // (1)文本文件的讀,返回的是一個string對象
        var str_data = jsb.fileUtils.getStringFromFile(new_dir + "/test_str_read.txt"); 
        console.log(str_data);
        str_data = "hello test_write !!!!!"
        jsb.fileUtils.writeStringToFile(str_data, new_dir + "/test_str_write.txt");
        // (2)二進制文件的讀寫, Uint8Array --> js對象
        var bin_array = jsb.fileUtils.getDataFromFile(new_dir + "/test_bin_read.png");
        console.log(bin_array[0], bin_array[1]); // 使用這個就能訪問二進制的每一個字節數據;
        jsb.fileUtils.writeDataToFile(bin_array, new_dir + "/test_bin_write.png");
        // end 

        // 刪除文件和文件夾
        // jsb.fileUtils.removeFile(new_dir + "/test_bin_write.png"); 
        // jsb.fileUtils.removeDirectory(new_dir);
    },

    // called every frame, uncomment this function to activate update callback
    // update: function (dt) {

    // },
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM