org.apache.jackrabbit.core.fs.FileSystem Maven / Gradle / Ivy
/*
* 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.jackrabbit.core.fs;
import java.io.InputStream;
import java.io.OutputStream;
/**
* The FileSystem
interface is an abstraction of a virtual
* file system. The similarities of its method names with with the methods
* of the java.io.File
class are intentional.
*
* Implementations of this interface expose a file system-like resource.
* File system-like resources include WebDAV-enabled servers, local file systems,
* and so forth.
*/
public interface FileSystem {
/**
* File separator
*/
String SEPARATOR = "/";
/**
* File separator character
*/
char SEPARATOR_CHAR = '/';
/**
* Initialize the file system
*
* @throws FileSystemException if the file system initialization fails
*/
void init() throws FileSystemException;
/**
* Close the file system. After calling this method, the file system is no
* longer accessible.
*
* @throws FileSystemException
*/
void close() throws FileSystemException;
/**
* Returns an input stream of the contents of the file denoted by this path.
*
* @param filePath the path of the file.
* @return an input stream of the contents of the file.
* @throws FileSystemException if the file does not exist
* or if it cannot be read from
*/
InputStream getInputStream(String filePath) throws FileSystemException;
/**
* Returns an output stream for writing bytes to the file denoted by this path.
* The file will be created if it doesn't exist. If the file exists, its contents
* will be overwritten.
*
* @param filePath the path of the file.
* @return an output stream for writing bytes to the file.
* @throws FileSystemException if the file cannot be written to or created
*/
OutputStream getOutputStream(String filePath) throws FileSystemException;
/**
* Creates the folder named by this path, including any necessary but
* nonexistent parent folders. Note that if this operation fails it
* may have succeeded in creating some of the necessary parent folders.
*
* @param folderPath the path of the folder to be created.
* @throws FileSystemException if a file system entry denoted by path
* already exists or if another error occurs.
*/
void createFolder(String folderPath) throws FileSystemException;
/**
* Tests whether the file system entry denoted by this path exists.
*
* @param path the path of a file system entry.
* @return true if the file system entry at path exists; false otherwise.
* @throws FileSystemException
*/
boolean exists(String path) throws FileSystemException;
/**
* Tests whether the file system entry denoted by this path exists and
* is a file.
*
* @param path the path of a file system entry.
* @return true if the file system entry at path is a file; false otherwise.
* @throws FileSystemException
*/
boolean isFile(String path) throws FileSystemException;
/**
* Tests whether the file system entry denoted by this path exists and
* is a folder.
*
* @param path the path of a file system entry.
* @return true if the file system entry at path is a folder; false otherwise.
* @throws FileSystemException
*/
boolean isFolder(String path) throws FileSystemException;
/**
* Tests whether the file system entry denoted by this path has child entries.
*
* @param path the path of a file system entry.
* @return true if the file system entry at path has child entries; false otherwise.
* @throws FileSystemException
*/
boolean hasChildren(String path) throws FileSystemException;
/**
* Returns the length of the file denoted by this path.
*
* @param filePath the path of the file.
* @return The length, in bytes, of the file denoted by this path,
* or -1L if the length can't be determined.
* @throws FileSystemException if the path does not denote an existing file.
*/
long length(String filePath) throws FileSystemException;
/**
* Returns the time that the file system entry denoted by this path
* was last modified.
*
* @param path the path of a file system entry.
* @return A long value representing the time the file system entry was
* last modified, measured in milliseconds since the epoch
* (00:00:00 GMT, January 1, 1970), or 0L if the modification
* time can't be determined.
* @throws FileSystemException if the file system entry does not exist.
*/
long lastModified(String path) throws FileSystemException;
/**
* Returns an array of strings naming the files and folders
* in the folder denoted by this path.
*
* @param folderPath the path of the folder whose contents is to be listed.
* @return an array of strings naming the files and folders
* in the folder denoted by this path.
* @throws FileSystemException if this path does not denote a folder or if
* another error occurs.
*/
String[] list(String folderPath) throws FileSystemException;
/**
* Returns an array of strings naming the files in the folder
* denoted by this path.
*
* @param folderPath the path of the folder whose contents is to be listed.
* @return an array of strings naming the files in the folder
* denoted by this path.
* @throws FileSystemException if this path does not denote a folder or if
* another error occurs.
*/
String[] listFiles(String folderPath) throws FileSystemException;
/**
* Returns an array of strings naming the folders in the folder
* denoted by this path.
*
* @param folderPath the path of the folder whose contents is to be listed.
* @return an array of strings naming the folders in the folder
* denoted by this path.
* @throws FileSystemException if this path does not denote a folder or if
* another error occurs.
*/
String[] listFolders(String folderPath) throws FileSystemException;
/**
* Deletes the file denoted by this path.
*
* @param filePath the path of the file to be deleted.
* @throws FileSystemException if this path does not denote a file or if
* another error occurs.
*/
void deleteFile(String filePath) throws FileSystemException;
/**
* Deletes the folder denoted by this path. Any contents of this folder
* (folders and files) will be deleted recursively.
*
* @param folderPath the path of the folder to be deleted.
* @throws FileSystemException if this path does not denote a folder or if
* another error occurs.
*/
void deleteFolder(String folderPath) throws FileSystemException;
}