日期:2012-4-12 来源:GBin1.com
新的HTML5标准给我们带来了大量的新特性和惊喜,例如,画图的画布Canvas,多媒体的audio和video等等。除了上面我们提到的,还有比较新的特性 - File System API
,它能够帮助我们来突破沙箱访问我们本地的文件系统,从而有效的弥补桌面和web应用之间的鸿沟。在今天这篇文章中,我们将会介绍基本的File system API的知识,探索HTML5的本地文件系统API的新特性,希望大家能够喜欢!
介绍
“我们不再需要下载并且安装软件。一个简单的web浏览器和一个可供使用的互联网就足以让我们在任何时间,任何地点,还有任何平台上使用任何web应用程序。”
简
单来说,web应用很酷,但是相对于桌面应用来说,它们有比较显著的弱点:它们无法在一个有层次的文件夹结构体即文件系统中互动和组织。
幸运的是,如果我们使用Filesystem
API,我们可以做到。这个API帮助我们控制私有的本地文件系统“沙箱(sandbox)",在这里我们可以读和写文件,创建和排列文件夹。虽然在我们
写这篇文章的时候,只有Google的Chrome完整的支持Filesystem API,我觉得我们还是有必要学习这个强大并且方便的本地存储特性。
本地文件系统API包含了俩个不同的版本。异步API,对于一般的应用来说非常有用。同步API,特别为web设计。这篇文章中,我们将介绍异步版本的API。
步骤一:开始
首先我们需要通过请求一个LocalFile对象来得到HTML5文件系统的访问,使用window.requetFileSystem全局方法:
window.requestFileSystem(type, size, successCallback, opt_errorCallback)
前俩个参数,你指定需要的生命周期类型和文件系统的大小。一个持久性的(Persistent)
文件系统非常适合长期保存用户数据。浏览器不会删除,除非用户特意要求。一个临时性(Temporary)
的文件系统非常适合web应用来缓存数据,但是在浏览器删除文件系统后任然可以操作。size用来指定字节大小,一般指定有效的最大访问存储大小。
第
三个参数是一个回调函数(callback),当用户代理成功的提供了一个文件系统后触发。它的主要参数是一个FileSystem对象。并且我们可以添
加一个可选的callback函数,用来在出错的时候调用,或者请求被拒绝的时候。参数是一个FileError对象。虽然这个对象是可选的,最好还是捕
捉这些错误,因为很多地方可能会出错。
文件系统得到这些方法依赖于最初包含的document。所有的document或者web应用来自
于同一个最初来源共享一个文件系统。两个document或者应用来自于不同的来源完全不同并且不可联系。一个文件系统严格被限制访问一个应用,不能访问
另外一个应用保存的数据。同时也对于其它的文件独立。这是一件好事:让文件访问不相干的系统文件资源,例如,操作系统的文件,完全没有必要,也不安全。
我们看看这个例子:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, initFS, errorHandler);
function initFS(fs){
alert("Welcome to Filesystem! It's showtime :)"); // Just to check if everything is OK :)
// place the functions you will learn bellow here
}
function errorHandler(){
console.log('An error occured');
}
这
里我们创建而来一个临时的5M文件系统存储。提供了一个成功的callback函数,用阿里操作我们的文件系统。并且添加了一个错误处理,用来处理错误。
这里errorhandler()方法非常具有一般性。 如果你想的话,你可以创建一个优化版本,显示给用户更加详细的error信息。
function errorHandler(err){
var msg = 'An error occured: ';
switch (err.code) {
case FileError.NOT_FOUND_ERR:
msg += 'File or directory not found';
break;
case FileError.NOT_READABLE_ERR:
msg += 'File or directory not readable';
break;
case FileError.PATH_EXISTS_ERR:
msg += 'File or directory already exists';
break;
case FileError.TYPE_MISMATCH_ERR:
msg += 'Invalid filetype';
break;
default:
msg += 'Unknown Error';
break;
};
console.log(msg);
};
这
个你得到的文件对象拥有一个name(一个唯一的文件系统名称,由浏览器赋值)并且ROOT属性参考文件系统的ROOT目录。这是一个
DirectoryEntry对象,可以嵌套使用。每一个文件目录都可以包含文件,由FileEntry对象标示。DirectoryEntry对象定义
使用路径名称得到DirectoryEntry和FileEntry的方法(如果不存在路径名,会创建新的目录)。DirectoryEntry同时定义
了createReader()工厂方法用来返回一个DirectoryReader对象用来列出一个文件夹。FileEntry类定义了一个得到
File对象的方。你可以使用FileReader对象来读取文件。FileEntry定义了另外一个方法用来返回一个FileWriter对象,你可以
将内容写到文件中。
听起来是不是有点儿复杂?通过下面的例子我们会更清楚的理解。
步骤二:处理文件夹
很显然,第一件我们需要做的事就是创建一些目录。虽然ROOT目录已经村存在,你不希望把所有的文件都保存在那里。文件夹使用DirectoryEntry对象来创建。在下面的例子中我们将在ROOT文件夹中创建一个文件夹:Documents
fs.root.getDirectory('Documents', {create: true}, function(dirEntry) {
alert('You have just created the ' + dirEntry.name + ' directory.');
}, errorHandler);
getDiretory()方法用来读和创建目录。作为第一个参数,你可以传递一个名字或者路径来寻找或者创建。我们设计第二个参数为true,因为我们需要创建一个目录 - 不是读一个已存在的目录。当然我们在最后添加了一个错误的callback方法。
...
...
原文来自:探索HTML5之本地文件系统API - File System API
分享到:
相关推荐
将压缩包解压后,根据操作系统架构(32位或64位)将对应的DLL文件复制到系统目录(如C:\Windows\System32或C:\Windows\SysWOW64)下,或者将它们放在应用程序的本地路径中,可以解决此类问题。不过,这样做之前一定...
2. **系统修复**:使用系统文件检查工具SFC(System File Checker)扫描并修复受损的系统文件。通过命令提示符运行“sfc /scannow”,系统会自动检测并修复缺失或损坏的系统文件。 3. **更新或重装操作系统**:如果...
- **运行系统文件检查器**: 使用`sfc /scannow`命令启动系统文件检查器(System File Checker),它可以扫描并修复系统文件的错误或缺失。 - **重新安装Windows更新**: 确保你的系统已安装所有必要的Windows更新,...
4. **使用系统文件检查器**:运行Windows内置的System File Checker(SFC)工具,它可以检测并修复系统文件的错误。 5. **杀毒扫描**:如果怀疑是病毒或恶意软件造成的,应进行全面的病毒扫描。 在处理这类问题时,...
7. **简单的接口**: 提供了与传统文件系统类似的API,使得应用程序易于使用。 **GFS的应用场景** GFS被广泛应用于Google的各种内部服务,如搜索引擎索引构建、日志处理、数据分析等。它的设计理念和实现方式对后来...
5. **手动复制DLL文件**:如果熟悉Windows系统,可以从其他相同系统的电脑上复制`api-ms-win-crt-runtime-l1-1-0.dll`到系统目录(通常是`C:\Windows\System32`),然后注册该文件(`regsvr32 api-ms-win-crt-...
【标题】"U-disk-MP3-file-system-programming.rar" 涉及的主要内容是U盘MP3文件系统的编程,这是一个关于如何在U盘上构建和管理MP3音乐文件的存储体系结构的技术主题。在现代数字音频时代,U盘因其便携性和大容量...
- **协同设计的应用程序与文件系统API**:通过放宽一致性模型的要求,GFS简化了设计复杂度,并引入了原子性的记录追加操作,使得多个客户端可以同时安全地追加数据到同一文件。 **2. 架构特点** GFS采用了主从结构...
3. **修复系统文件**:使用系统文件检查工具SFC(System File Checker)扫描并修复丢失或损坏的系统文件。 4. **更新操作系统**:有时,系统更新会包含必要的修复,确保你的Windows是最新的版本。 5. **检查关联...
2. **系统文件检查**:运行内置的System File Checker(SFC)工具,该工具可以扫描并修复系统文件的损坏。打开命令提示符(以管理员身份运行),输入`sfc /scannow`,然后等待过程完成。这可能需要一段时间,并且在...
本机文件系统自述文件 这是扩展名“ native-file-system”的自述文件。 写下简短描述后,我们建议包括以下各节。 特征 描述扩展程序的特定功能,包括扩展程序的屏幕截图。 图像路径是相对于此README文件的。 例如,...
Google File System (GFS) 是由Google设计并实现的一种分布式文件系统,旨在解决大规模数据密集型应用中的存储需求。GFS能够在廉价的硬件设备上运行,并且提供高可靠性和高性能的服务。 #### 二、设计理念与特点 #...
windows加载linux的依赖dll文件 1.放在依赖程序同目录下 ...Copy the .DLL file to your C:\Windows\System32\ folder. (32 bit) Copy the .DLL file to your C:\Windows\SysWOW64\ folder. (64 bit)
5. **手动替换dll文件**:如果上述方法无效,可以尝试从可靠的来源下载"api-ms-win-crt-runtime-l1-1-0.dll"文件,将其复制到系统的相应目录(通常是"C:\Windows\System32")。但是,这种方法需要谨慎操作,以免引入...
标题 "A-simple-file-sharing-system.rar_idea_java file system_java 文件共享" 描述了一个基于Java语言开发的简单文件共享系统,该系统运用了P2P(点对点)网络技术,并在IntelliJ IDEA(简称IDEA)开发环境中构建...
5. **第三方修复工具**:还可以使用系统清理和修复工具,如CCleaner或System File Checker,它们可能能够自动识别并修复缺失的DLL文件。 6. **重新安装软件**:如果问题仍然存在,可能是由于应用程序本身的问题,...
本机文件系统适配器(ponyfill) 这是一个浏览器内文件系统,它遵循并支持从各种后端存储和检索文件。 转接器 该polyfill / ponyfill附带5个文件系统后端: native :将文件存储在本Native Sandboxed文件存储中 ...
5. **使用系统修复工具**:如SFC (System File Checker) 或DISM (Deployment Image Servicing and Management),检查并修复系统文件。 在提供的压缩包文件名称列表中,我们看到"x64"和"x32",这很可能包含了针对...
在使用webservice,esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded...执行System.out.println(System.getProperty("java.endorsed.dirs"));输出jaxb-api-2.1.jar应该放的目录。下载附件放到目录下即可。
HDFS是Hadoop的核心组件之一,它设计为分布式的、容错性强的文件系统,能够跨多台机器存储和处理海量数据。其主要特点是高可用性、可扩展性和对大型文件的支持。 FileSystem API是Hadoop提供的一套接口,允许开发者...