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 中国 \r\n‘], {
                    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 += ‘\r\n文件名:‘ + fileEntry.name + ‘\r\n文件内容:‘ + reader.result;
            //文件大小
            txt1.innerHTML += ‘\r\n字节大小:‘ + file.size;
        }
        reader.readAsText(file);
    });
}

更多:

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

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

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

时间: 2024-12-25 20:50:35

HTML5 本地文件操作之FileSystemAPI实例(二)的相关文章

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

文件夹操作demo 1.读取根目录文件夹内容 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //显示根目录下的内容 var dirReader = fs.root.creat

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

目录操作Demo二 1.删除目录 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除目录,子目录创建需要递归,获取可以直接指定'/' //如果子目录不存在,抛出删除异常

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

一.请求配额 DeprecatedStorageInfo对象 window.webkitStorageInfo:当使用持久存储模式时需要用到该对象的接口 方法: 1.requestQuota(type,size,successCB,errorCB);请求配额 2.queryUsageAndQuota();获取配额信息 window.requestFileSystem(window.PERSISTENT, gratedBytes, initFs, errorHandler); DOMFileSys

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

一.文件目录操作 1.DirectoryEntry对象 四.URL相关 URLType 文件路径类型 说明:在文件系统中的文件路径需转换成URL格式,已方便runtime快速加载. RelativeURL 相对路径URL 说明:只能在扩展API中使用,相对于基座提供的特定目录,以"_"开头. 常量: "_www": (DOMString 类型 )应用资源目录 保存应用的所有html.css.js等资源文件,与文件系统中根目录PRIVATE_WWW一致,后面加相对路径

H5读取本地文件操作

H5读取本地文件操作 本文转自:转:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html感谢大神分享. 常见的语言比如php.shell等,是如何读取文件的呢? 实际上,大多数语言都需要先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件! 那么,HTML5是否也是这样的呢? 答案是肯定的! HTML5为我们提供了一种与本地文件系统交互的标准方式:File Api. 该规范主要定义了以下数据结构: File Fil

Html5 本地文件读取 API 研究使用过程中的意外发现 - MDN

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 补充: 终于可以读出肉的眼能看懂的人类文字了!!! 经在 safari 7.0.4(9537.76.4) 测试,即使关闭 WebGL 支持,Fil

[JS进阶] HTML5 之文件操作(file)

前言 在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建. 该元素包含一个文本输入字段,用来输入文件名,还有一个按钮,用来打开文件选择对话框以便图形化选择文件. 该元素的 value 属性保存了用户指定的文件的名称,但是当包含一个 file-upload 元素的表单被提交的时候,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名. 当用户选择或编辑一个文件名,file-upload 元素触发 onc

前端本地文件操作与上传

前端无法像原生APP一样直接操作本地文件,否则的话打开个网页就能把用户电脑上的文件偷光了,所以需要通过用户触发,用户可通过以下三种方式操作触发: 通过input type="file" 选择本地文件 通过拖拽的方式把文件拖过来 在编辑框里面复制粘贴 第一种是最常用的手段,通常还会自定义一个按钮,然后盖在它上面,因为type="file"的input不好改变样式.如下代码写一个选择控件,并放在form里面: <form> <input type=&q

html5之文件操作

用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据.到目前文职,只有FF3.6+和Chrome6.0+实现了FileReader接口. 1.FileReader接口的方法 FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取.无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中. FileReader接口的方法 方法名 参数 描述 readAsB