• HTML5 本地文件操作之FileSystemAPI实例(二)


    文件操作实例整理二

    1.删除文件、复制文件、移动文件

    //获取请求权限
    window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
    window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler);
    function initFs(fs) {
        //删除文件 fileEntry.remove()
        fs.root.getFile('test2.txt', { create: false }, function (fileEntry) {
            fileEntry.remove(function () {
                console.log('删除文件成功');
            }, errorHandler);
        }, errorHandler);
        //复制文件,如果文件存在则覆盖
        fs.root.getFile('test4.txt', { create: false }, function (fileEntry) {
            fileEntry.copyTo(fs.root, 'text4_copy.txt', function (fileEntry) {
                console.info(fileEntry);
                console.log('复制文件成功:' + fileEntry.fullPath);
            }, errorHandler);
        }, errorHandler)
        //移动文件,如果文件不存在移动失败
        fs.root.getFile('test3.txt', { create: false }, function (fileEntry) {
            //获取移动目录
            fs.root.getDirectory('mymove', { create: true }, function (dirEntry) {
                //移动文件如果
                fileEntry.moveTo(dirEntry, 'test4_move.txt', function (fileEntry) {
                    console.log('移动文件成功:' + fileEntry.fullPath);
                }, errorHandler);
            }, errorHandler);
        }, errorHandler);
    }
    function errorHandler(err) {
        console.info('创建文件失败');
        console.info(err);
    }

    2.写入追加文件

    window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
    window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler);
    function initFs(fs) {
        //指定位置,追加内容
        fs.root.getFile('test3.txt', { create: true }, function (fileEntity) {
            //向文件中写入内容
            if (fileEntity.isFile) {
                fileEntity.createWriter(function (fileWriter) {
                    //将写入指针移动到文件结尾
                    fileWriter.seek(fileWriter.length);
    
                    var blob = new Blob(['hello 中国 
    '], {
                        type: 'text/plain'
                    });
                    fileWriter.write(blob);
                    //显示文件内容
                    showFile(fileEntity);
                }, errorHandler);
            }
            console.info('当前文件名,' + fileEntity.name);
        }, errorHandler);
    }
    function errorHandler(err) {
        console.info('创建文件失败');
        console.info(err);
    }
    //显示指定fileEntity中的内容
    function showFile(fileEntity) {
        fileEntity.file(function (file) {
            var reader = new FileReader();
            reader.onloadend = function (e) {
                var txt1 = document.getElementById('txt1');
                txt1.innerHTML = '写入文件成功:' + reader.result;
            }
            reader.readAsText(file);
        });
    }

    3.截断文件可以使用fileWriter.trancute()

    4.读取根目录中的图片,显示到网页

    //获取请求权限
    window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
    window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler);
    function initFs(fs) {
        //读取根目录的图片,并显示
        var dirReader = fs.root.createReader();
        var entries = [];
        var readEntries = function () {
            dirReader.readEntries(function (results) {
                if (results.length == 0) {
                    showEntries(entries.sort());
                } else {
                    entries = entries.concat(toArray(results));
                    readEntries();
                }
            }, errorHandler);
        }
        readEntries();
    }
    function errorHandler(err) {
        console.info('创建文件失败');
        console.info(err);
    }
    function toArray(list) {
        return Array.prototype.slice.call(list || [], 0);
    }
    //显示图片
    function showEntries(entries) {
        var fragment = document.createDocumentFragment();
        entries.forEach(function (entry, i) {
            if (entry.isFile && entry.name.indexOf('.png') != -1) {
                //将entry.toURL()结果:filesystem:http://localhost:57128/temporary/2017-02-23_182417.png
                console.info(entry.toURL());
                var li = document.createElement('li');
                li.innerHTML = ['是否是目录:', entry.isDirectory, '----文件名:', entry.name, '<img src="' + entry.toURL() + '" width="100" border=1 />'].join('');
                fragment.appendChild(li);
            }
        });
        document.querySelector('#img').appendChild(fragment);
    }

    5.选择多个文件,并复制到沙盒文件系统中

    document.querySelector('#myFile').onchange = function (e) {
        var files = this.files;
        //获取请求权限
        window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
        window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler);
        function initFs(fs) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                (function (f) {
                    //复制文件,如果存在抛出异常
                    fs.root.getFile(file.name, { create: true, exclusive: true }, function (fileEntry) {
                        fileEntry.createWriter(function (fileWriter) {
                            fileWriter.write(f); //write() 参数可以使File或Blob对象
                        });
                        //显示文件
                        showFile(fileEntry);
                    }, errorHandler)
                })(file);
            }
        }
    };
    function errorHandler(err) {
        console.info('创建文件失败');
        console.info(err);
    }
    //显示指定fileEntity中的文件内容、文件信息
    function showFile(fileEntry) {
        fileEntry.file(function (file) {
            var reader = new FileReader();
            reader.onloadend = function (e) {
                var txt1 = document.getElementById('txt1');
                txt1.innerHTML += '
    文件名:' + fileEntry.name + '
    文件内容:' + reader.result;
                //文件大小
                txt1.innerHTML += '
    字节大小:' + file.size;
            }
            reader.readAsText(file);
        });
    }

    更多:

    HTML5 本地文件操作之FileSystemAPI实例(一)

    HTML5 本地文件操作之FileSystemAPI整理(二)

    HTML5 本地文件操作之FileSystemAPI整理(一)

  • 相关阅读:
    第六周Java学习总结
    结对编程练习_四则运算(一)
    实验一Java开发环境的熟悉
    第四周Java学习总结
    第三周Java学习总结
    2019-2020-2 20175230滕星《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175230 滕星《网络对抗技术》Exp 8 Web基础
    2019-2020-2 20175230滕星《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 网络对抗技术 20175230滕星 Exp6 MSF基础应用
    2019-2020-2 网络对抗技术 20175230滕星 Exp5 信息搜集与漏洞扫描
  • 原文地址:https://www.cnblogs.com/tianma3798/p/6441046.html
Copyright © 2020-2023  润新知