-
Notifications
You must be signed in to change notification settings - Fork 703
/
CarbonFile.java
177 lines (134 loc) · 5.51 KB
/
CarbonFile.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
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.carbondata.core.datastore.filesystem;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.carbondata.core.datastore.impl.FileFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.fs.permission.FsPermission;
public interface CarbonFile {
String getAbsolutePath();
CarbonFile[] listFiles(CarbonFileFilter fileFilter);
CarbonFile[] listFiles();
List<CarbonFile> listFiles(Boolean recurssive) throws IOException;
/**
* It returns list of files with location details.
* @return
*/
CarbonFile[] locationAwareListFiles(PathFilter pathFilter) throws IOException;
String getName();
boolean isDirectory();
boolean exists();
String getCanonicalPath();
CarbonFile getParentFile();
String getPath();
long getSize();
boolean renameTo(String changetoName);
boolean renameForce(String changetoName);
boolean delete();
boolean createNewFile();
long getLastModifiedTime();
boolean setLastModifiedTime(long timestamp);
boolean truncate(String fileName, long validDataEndOffset);
/**
* This method will be used to check whether a file has been modified or not
*
* @param fileTimeStamp time to be compared with latest timestamp of file
* @param endOffset file length to be compared with current length of file
* @return
*/
boolean isFileModified(long fileTimeStamp, long endOffset);
DataOutputStream getDataOutputStream(String path, FileFactory.FileType fileType, int bufferSize,
boolean append) throws IOException;
DataInputStream getDataInputStream(String path, FileFactory.FileType fileType, int bufferSize,
Configuration configuration) throws IOException;
/**
* get data input stream
* @param path
* @param fileType
* @param bufferSize
* @param compressor name of compressor to write this file
* @return dataInputStream
* @throws IOException
*/
DataInputStream getDataInputStream(String path, FileFactory.FileType fileType, int bufferSize,
String compressor) throws IOException;
DataInputStream getDataInputStream(String path, FileFactory.FileType fileType, int bufferSize,
long offset) throws IOException;
DataOutputStream getDataOutputStream(String path, FileFactory.FileType fileType)
throws IOException;
DataOutputStream getDataOutputStream(String path, FileFactory.FileType fileType, int bufferSize,
long blockSize) throws IOException;
/**
* get data output stream
* @param path file path
* @param fileType file type
* @param bufferSize write buffer size
* @param blockSize block size
* @param replication replication for this file
* @return data output stream
* @throws IOException if error occurs
*/
DataOutputStream getDataOutputStream(String path, FileFactory.FileType fileType, int bufferSize,
long blockSize, short replication) throws IOException;
/**
* get data output stream
* @param path
* @param fileType
* @param bufferSize
* @param compressor name of compressor to write this file
* @return DataOutputStream
* @throws IOException
*/
DataOutputStream getDataOutputStream(String path, FileFactory.FileType fileType, int bufferSize,
String compressor) throws IOException;
boolean isFileExist(String filePath, FileFactory.FileType fileType, boolean performFileCheck)
throws IOException;
boolean isFileExist(String filePath, FileFactory.FileType fileType) throws IOException;
boolean createNewFile(String filePath, FileFactory.FileType fileType) throws IOException;
boolean createNewFile(String filePath, FileFactory.FileType fileType, boolean doAs,
final FsPermission permission) throws IOException;
boolean deleteFile(String filePath, FileFactory.FileType fileType) throws IOException;
boolean mkdirs(String filePath) throws IOException;
DataOutputStream getDataOutputStreamUsingAppend(String path, FileFactory.FileType fileType)
throws IOException;
boolean createNewLockFile(String filePath, FileFactory.FileType fileType) throws IOException;
/**
* Returns locations of the file
* @return
*/
String[] getLocations() throws IOException;
/**
* set the replication factor for this file
*
* @param filePath file path
* @param replication replication
* @return true, if success; false, if failed
* @throws IOException if error occurs
*/
boolean setReplication(String filePath, short replication) throws IOException;
/**
* get the default replication for this file
* @param filePath file path
* @return replication factor
* @throws IOException if error occurs
*/
short getDefaultReplication(String filePath) throws IOException;
}