1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
---
title: FileSystemFileEntry
slug: Web/API/FileSystemFileEntry
translation_of: Web/API/FileSystemFileEntry
---
<div>{{APIRef("File System API")}}{{Non-standard_header}}</div>
<p><a href="/en/DOM/File_API/File_System_API" title="en/DOM/File_API/File_System_API">文件系统 API</a> 的<strong><code> FileSystemFileEntry</code></strong> 接口表示文件系统中的文件。它提供了属性,描述文件的属性,以及 {{domxref("FileSystemFileEntry.file", "file()")}} 方法,它创建了可以用于读取文件的 {{domxref("File")}} 对象。</p>
<div class="note">
<p>由于这是个非标准 API,它的规范当前并不在标准化过程中。重要的是要记住,并不是所有浏览器都实现了它,并且实现它的浏览器可能仅仅实现一小部分。点击 {{anch("Browser compatibility")}} 来查看更多细节。</p>
</div>
<h2 id="属性" style="line-height: 30px; font-size: 2.14285714285714rem;">属性</h2>
<p>从它的父接口 {{domxref("FileSystemEntry")}} 继承属性,但是这个接口没有独特的属性。</p>
<h2 id="方法">方法</h2>
<dl>
<dt>{{domxref("FileSystemFileEntry.file", "file()")}}</dt>
<dd>创建新的 {{domxref("File")}} 对象,它可以用于读取文件。</dd>
</dl>
<h3 id="basic_concepts" name="basic_concepts">废弃的方法</h3>
<dl>
<dt>{{domxref("FileSystemFileEntry.createWriter", "createWriter()")}} {{obsolete_inline}}</dt>
<dd>创建新的 {{domxref("FileWriter")}} 对象,它允许写入由文件系统条目表示的对象。</dd>
</dl>
<h2 id="basic_concepts" name="basic_concepts">基本概念</h2>
<p>为了向文件写入内容,通过调用 {{domxref("FileSystemFileEntry.createWriter", "createWriter()")}} 创建 {{domxref("FileWriter")}} 对象。为了读取文件,通过调用 {{domxref("FileSystemFileEntry.file", "file()")}},获取表示其内容的 {{domxref("File")}} 对象。</p>
<h3 id="example" name="example">示例</h3>
<p>下面的代码创建了一个空文件,叫做 "<code>log.txt"</code> (如果不存在的话),并使用文本 "Meow" 来填充。在成功的回调中,设置了事件处理器,来处理 {{event("error")}} <code>error</code> 和 {{event("writeend")}} 事件。通过创建 blob,向其追加文本,以及将 blob 传递给 {{domxref("FileWriter.write()")}},文本数据写入了文件。</p>
<pre class="brush: js">function onInitFs(fs) {
fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
// Create a FileWriter object for our FileSystemFileEntry (log.txt).
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
// Create a new Blob and write it to log.txt.
var bb = new BlobBuilder();
bb.append('Meow');
fileWriter.write(bb.getBlob('text/plain'));
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);</pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('File System API')}}</td>
<td>{{Spec2('File System API')}}</td>
<td>Draft of proposed API</td>
</tr>
</tbody>
</table>
<p>这个 API 没有官方的 W3C 或者 WHATWG 规范。</p>
<h2 id="Browser_compatibility" name="Browser_compatibility">浏览器兼容性</h2>
<p>{{ CompatibilityTable }}</p>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Edge</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Microsoft Edge</th>
<th>Opera</th>
<th>Safari (WebKit)</th>
</tr>
<tr>
<td>Basic support</td>
<td>13 {{ property_prefix("webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{ CompatGeckoDesktop(50) }}</td>
<td>{{ CompatNo }}</td>
<td>{{CompatVersionUnknown}}<sup>[2]</sup></td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
</tr>
<tr>
<td><code>createWriter()</code></td>
<td>13 {{ property_prefix("webkit") }}</td>
<td>{{CompatNo}}</td>
<td>{{ CompatNo }}<sup>[1]</sup></td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Chrome for Android</th>
<th>Edge</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Phone</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{ CompatNo }}</td>
<td>0.16{{ property_prefix("webkit") }}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoMobile(50)}}</td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
</tr>
<tr>
<td><code>createWriter()</code></td>
<td>{{ CompatNo }}</td>
<td>0.16{{ property_prefix("webkit") }}</td>
<td>{{CompatNo}}</td>
<td>{{ CompatNo }}<sup>[1]</sup></td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
<td>{{ CompatNo }}</td>
</tr>
</tbody>
</table>
</div>
<p>[1] 虽然从 Firefox 50 开始,存在 <code>createWriter()</code> 方法,它是不受支持的,并且会立即报告 <code>NS_ERROR_DOM_SECURITY_ERR </code>错误给错误回调。这个方法在 Firefox 52 中彻底移除。</p>
<p>[2] Microsoft Edge 实现了这个接口,作为 <code>WebKitEntry</code> 接口的一部分,它是用于 {{domxref("FileSystemEntry")}} 的名称。</p>
<h2 id="另见">另见</h2>
<ul>
<li><a href="/en-US/docs/Web/API/File_and_Directory_Entries_API">文件和驱动器条目 API</a></li>
<li><a href="/en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction">文件系统 API 简介</a></li>
</ul>
|