-
Notifications
You must be signed in to change notification settings - Fork 668
/
FileObject.java
178 lines (165 loc) · 7.06 KB
/
FileObject.java
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
175
176
177
178
/*
* Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.tools;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.net.URI;
/**
* File abstraction for tools. In this context, <em>file</em> means
* an abstraction of regular files and other sources of data. For
* example, a file object can be used to represent regular files,
* memory cache, or data in databases.
*
* <p>All methods in this interface might throw a SecurityException if
* a security exception occurs.
*
* <p>Unless explicitly allowed, all methods in this interface might
* throw a NullPointerException if given a {@code null} argument.
*
* @author Peter von der Ahé
* @author Jonathan Gibbons
* @since 1.6
*/
// 文件对象
public interface FileObject {
/**
* Returns an InputStream for this file object.
*
* @return an InputStream
*
* @throws IllegalStateException if this file object was
* opened for writing and does not support reading
* @throws UnsupportedOperationException if this kind of file
* object does not support byte access
* @throws IOException if an I/O error occurred
*/
// 打开输入流,准备读文件
InputStream openInputStream() throws IOException;
/**
* Returns an OutputStream for this file object.
*
* @return an OutputStream
*
* @throws IllegalStateException if this file object was
* opened for reading and does not support writing
* @throws UnsupportedOperationException if this kind of
* file object does not support byte access
* @throws IOException if an I/O error occurred
*/
// 打开输出流,准备写文件
OutputStream openOutputStream() throws IOException;
/**
* Returns a reader for this object. The returned reader will
* replace bytes that cannot be decoded with the default
* translation character. In addition, the reader may report a
* diagnostic unless {@code ignoreEncodingErrors} is true.
*
* @param ignoreEncodingErrors ignore encoding errors if true
*
* @return a Reader
*
* @throws IllegalStateException if this file object was
* opened for writing and does not support reading
* @throws UnsupportedOperationException if this kind of
* file object does not support character access
* @throws IOException if an I/O error occurred
*/
// 打开字符输入流,准备读文件
Reader openReader(boolean ignoreEncodingErrors) throws IOException;
/**
* Returns a Writer for this file object.
*
* @return a Writer
*
* @throws IllegalStateException if this file object was
* opened for reading and does not support writing
* @throws UnsupportedOperationException if this kind of
* file object does not support character access
* @throws IOException if an I/O error occurred
*/
// 打开字符输出流,准备写文件
Writer openWriter() throws IOException;
/**
* Returns a URI identifying this file object.
*
* @return a URI
*/
// 获取文件的UTI
URI toUri();
/**
* Returns a user-friendly name for this file object. The exact
* value returned is not specified but implementations should take
* care to preserve names as given by the user. For example, if
* the user writes the filename {@code "BobsApp\Test.java"} on
* the command line, this method should return {@code
* "BobsApp\Test.java"} whereas the {@linkplain #toUri toUri}
* method might return {@code
* file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java}.
*
* @return a user-friendly name
*/
// 获取文件名称(包括路径)
String getName();
/**
* Returns the character content of this file object, if available.
* Any byte that cannot be decoded will be replaced by the default
* translation character. In addition, a diagnostic may be
* reported unless {@code ignoreEncodingErrors} is true.
*
* @param ignoreEncodingErrors ignore encoding errors if true
*
* @return a CharSequence if available; {@code null} otherwise
*
* @throws IllegalStateException if this file object was
* opened for writing and does not support reading
* @throws UnsupportedOperationException if this kind of
* file object does not support character access
* @throws IOException if an I/O error occurred
*/
// 获取文件内容(文件需以读模式打开)
CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException;
/**
* Returns the time this file object was last modified. The time is
* measured in milliseconds since the epoch (00:00:00 GMT, January
* 1, 1970).
*
* @return the time this file object was last modified; or 0 if
* the file object does not exist, if an I/O error occurred, or if
* the operation is not supported
*/
// 返回文件最后一次修改的时间,返回0表示该文件不存在或存在I/O错误或不支持此操作
long getLastModified();
/**
* Deletes this file object. In case of errors, returns false.
*
* @return true if and only if this file object is successfully
* deleted; false otherwise
*/
// 尝试删除文件,返回值表示文件是否删除成功
boolean delete();
}