| /******************************************************************************* |
| * Copyright (c) 2005, 2008 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.dltk.core.environment; |
| |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| import java.net.URI; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| |
| /** |
| * This class hold handle to file or directory, most methods semantic are |
| * similar to File class. |
| */ |
| public interface IFileHandle { |
| |
| /** |
| * Return associated environment. |
| * |
| * @return associated environment |
| */ |
| IEnvironment getEnvironment(); |
| |
| /** |
| * Return associated environment identifier |
| * |
| * @return environment identifier |
| */ |
| String getEnvironmentId(); |
| |
| IPath getPath(); |
| |
| /** |
| * Return OS specific path representation of this handle. |
| * |
| * @return |
| */ |
| String toOSString(); |
| |
| /** |
| * Return canonical path. |
| */ |
| String getCanonicalPath(); |
| |
| /** |
| * Return full path associated with this handle. Full path contains |
| * environment identifier. |
| * |
| * @see EnvironmentPathUtils for more information about full path to path |
| * conversions. |
| * |
| * @return full path. |
| */ |
| IPath getFullPath(); |
| |
| /** |
| * Return file name. |
| * |
| * @return file name. |
| */ |
| String getName(); |
| |
| /** |
| * Convert file to URI. |
| * |
| * @return uri for file. |
| */ |
| URI toURI(); |
| |
| /** |
| * Return this file parent file handle. |
| * |
| * @return parent file handle |
| */ |
| IFileHandle getParent(); |
| |
| /** |
| * Return children of this directory. |
| * |
| * @return children or <code>null</code> on error |
| */ |
| IFileHandle[] getChildren(); |
| |
| /** |
| * Return specific child by name |
| * |
| * @param path |
| * - path to file |
| * @return child file handle |
| */ |
| IFileHandle getChild(String path); |
| |
| /** |
| * Tests file or directory existence. |
| * |
| * @return <code>true</code> if file or directory exists. |
| */ |
| boolean exists(); |
| |
| /** |
| * Returns input stream for this file, or throws exception if file does not |
| * exist. |
| * |
| * @param monitor |
| * - progress monitor |
| * @return input stream |
| * @throws IOException |
| */ |
| InputStream openInputStream(IProgressMonitor monitor) throws IOException; |
| |
| /** |
| * Returns an open output stream on the contents of this file. The caller is |
| * responsible for closing the provided stream when it is no longer needed. |
| * This file need not exist in the underlying file system at the time this |
| * method is called. |
| * |
| * @param monitor |
| * @return |
| * @throws IOException |
| */ |
| OutputStream openOutputStream(IProgressMonitor monitor) throws IOException; |
| |
| /** |
| * Return true if this file is symbolic link |
| * |
| * @return |
| */ |
| boolean isSymlink(); |
| |
| /** |
| * Return <code>true</code> if file is a directory |
| */ |
| boolean isDirectory(); |
| |
| /** |
| * Return <code>true</code> if this file is a regular file |
| */ |
| boolean isFile(); |
| |
| /** |
| * Return last modified time, or <code>0L</code> if the file does not exist |
| * or if an I/O error occurs |
| * |
| * @return last modified time |
| */ |
| long lastModified(); |
| |
| /** |
| * Return file length |
| * |
| * @return |
| */ |
| long length(); |
| |
| /** |
| * @param destination |
| * @since 2.0 |
| */ |
| void move(IFileHandle destination) throws CoreException; |
| } |