API - 文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caishu1995/article/details/80271550

    目前只支持google浏览器

    是<input type="file">的api,必须先由用户主动选取文件之后,才能获取这个文件的信息。

-------------------------------------------------------------------

-------------------------------------------------------------------

硬盘

    申请硬盘空间

目录

    创建/打开目录

    读取目录内容

    删除目录

文件

    读取文件

    读取文件信息

    切割文件

    创建或打开文件

    列出文件

    获得选中项所在的目录

    处理文件

内容

    写入内容

    读取内容

    其他

相关事件

-------------------------------------------------------------------

-------------------------------------------------------------------

硬盘

    申请硬盘空间

//type  类型【TEMPORARY临时保存、PERSISTENT持久保存】
//size  大小,以字节为单位
//sunccessFunction 成功函数
//errorFunction    失败函数
window.requestFileSystem(type, size, sunccessFunction, errorFunction);//创建文件系统

//成功后保留引用
function sunccessFunction(fs){
    hd = fs.root;      //获得对根目录的引用,返回DirectoryEntry对象
    var name = fs.name;//获得相关信息
}

目录

    创建/打开目录

//{create: true, exclusive: false} create是否创建文件 exclusive如果创建已存在的文件,则返回错误
//sunccessFunction: function (dirEntry){}
hd.getDirectory(name, {create: true, exclusive: false}, sunccessFunction, errorFunction);//创建或打开目录

    读取目录内容

var dirReader = dirEntry.createReader(); //读取指定目录中的项,返回directoryReader对象

//sunccessFunction: function(results) {}
dirReader.readEntries(sunccessFunction, errorFunction);//从选中目录总读取下一项   由于按块读取项列表,所以必须多次调用,直到返回对象为空

    删除目录

dirEntry.removeRecursively();                   //删除目录及内部所有内容
dirEntry.remove(successFunction, errorFunction);//删除目录,目录的内容必须为空,否则进入error

文件

    读取文件

var reader = new FileReader();

//根据特殊的编码格式,将内容解读成文本。如果选择的是非文本文件,就会出现奇怪的字符。
reader.readAsText(file, encoding);
//读取Blob或File对象的每个直接。但该属性是非标准的,尽量不要使用!!
reader.readAsBinaryString(file);
//读取Blob或File内容,并形成URL数据
reader.readAsDataURL(file);
//读取Blob或File内容,并形成数据缓冲区
reader.readAsArrayBuffer(file);

    以上方法是异步的。也就是说必须要挂载,实例下的 onload 或 onloadend 的方法处理转化后的结果。

reader.onloadend = function (e) {
    //通过e.target.result获得src的内容
};

    读取文件信息

file.name;//文件名
file.size;//文件大小
file.type;//文件类型

    切割文件

//start  开始位置
//length 长度
//type   类型
file.slice(start, length, type);//切割文件

    创建或打开文件

//sunccessFunction: function(fileEntry){}
dirEntry.getFile(name, {create: true, exclusive: false}, sunccessFunction, errorFunction); //同目录打开

    列出文件

//sunccessFunction: function(files){}
dirReader.readEntries(successFunction, errorFunction);//从选中的目录中读取下一项。由于不能一次返回全部项,所以需要循环调用

    获得选中项所在的文件

//sunccessFunction: function(parent){}
dirEntry.getParent(successFunction, errorFunction);

    处理文件

//移动文件
//parent:新位置
//newName:如果存在,就更新名字
fileEntry.moveTo(parent, newName, successFunction, errorFunction);

//复制文件
//parent:新位置
//newName:如果存在,就更新名字
fileEntry.copyTo(parent, newName, successFunction, errorFunction);

//删除文件
fileEntry.remove(successFunction, errorFunction);

内容

    写入内容

//返回相关的fileWriter对象
//sunccessFunction: function(fw){}
fileEntry.createWriter(successFunction, errorFunction);

fw.write(data);   //写入数据

    获得需要写入的数据

//创建对象
var blob = new BlobBuilder();
blob.append(text);        //追加文字
fw.write(blob.getBlob()); //转换数据格式

    读取内容

//sunccessFunction: function(file){}
fileEntry.file(successFunction, errorFunction);//返回相关的file对象

    创建读取的对象进行读取

var reader = new FileReader();
reader.readAsText(file);
reader.onload = success;

    其他

fw.seek(offset);  //设置添加内容的位置。offset应该以字节声明
fw.truncate(size);//根据size的值修改文件的长度
fw.position;      //返回下一个写入的位置
fw.length;        //返回文件的长度

    事件

writeStart//开始写入
progress
write     //完全写入后的事件
abort     //写入终止
error
writeend  //写入结束


相关事件
onload
onloadstart
onloadend
onabort
onerror

参考: HTML5精粹

猜你喜欢

转载自blog.csdn.net/caishu1995/article/details/80271550