blob: 70af18edb59c1854dc166c0487ce9d17e0397e23 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 itemis AG (http://www.itemis.eu) and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.xtend.lib.macro.file;
import java.io.InputStream;
import java.net.URI;
import com.google.common.annotations.Beta;
/**
*
* Support for accessing the file system.
*
* @author Anton Kosyakov
* @author Sven Efftinge
* @noimplement This interface is not intended to be implemented by clients.
*/
@Beta
public interface FileSystemSupport {
/**
* @param path
* @return the children of the folder the given path points to;
* empty iterable if the path points to a non existent file or folder
* @exception IllegalArgumentException if it is not possible to get children of a given path for some reason
*/
Iterable<? extends Path> getChildren(Path path);
/**
* @param path the path
* @return whether the given path points to an existent file.
*/
boolean exists(Path path);
/**
* @param path
* @return whether the given path points to an existent folder
*/
boolean isFolder(Path path);
/**
* @param path
* @return whether the given path points to an existent file
*/
boolean isFile(Path path);
/**
* @param path
* @return A <code>long</code> value representing the time the file was
* last modified, measured in milliseconds since the epoch
* (00:00:00 GMT, January 1, 1970), or <code>0L</code> if the
* file does not exist.
*/
long getLastModification(Path path);
/**
* Returns the name of a charset to be used when decoding the contents of this
* file into characters.
*
* @param path the path
* @return the name of a charset
* @exception IllegalArgumentException if it is not possible to get charset of a given path for some reason
*/
String getCharset(Path path);
/**
* Returns the contents of this file as a char sequence.
*
* @param path the path
* @return an input stream containing the contents of the file
* @exception IllegalArgumentException if the path points to a non existent file
*/
CharSequence getContents(Path path);
/**
* Returns an open input stream on the contents of this file.
*
* @param path the path
* @return an input stream containing the contents of the file
* @exception IllegalArgumentException if the path points to a non existent file
*/
InputStream getContentsAsStream(Path path);
/**
* <p>
* Returns the URI representing the given path.
* </p>
*
* <p>
* <b>Warning</b>: Don't use this method to get write access.
* </p>
*
* @param path
* the path
* @return the URI representing the given path or <code>null</code> if the path points to a non existent file or a folder.
*/
URI toURI(Path path);
}