icbm/src/main/java/dan200/computercraft/api/filesystem/IWritableMount.java
2022-11-10 00:00:10 +01:00

62 lines
2.5 KiB
Java

/**
* This file is part of the public ComputerCraft API - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2015. This API may be redistributed unmodified and in
* full only. For help using the API, and posting your mods, visit the forums at
* computercraft.info.
*/
package dan200.computercraft.api.filesystem;
import java.io.IOException;
import java.io.OutputStream;
/**
* Represents a part of a virtual filesystem that can be mounted onto a computercraft
* using IComputerAccess.mount() or IComputerAccess.mountWritable(), that can also be
* written to. Ready made implementations of this interface can be created using
* ComputerCraftAPI.createSaveDirMount(), or you're free to implement it yourselves!
* @see dan200.computercraft.api.ComputerCraftAPI#createSaveDirMount(World, String)
* @see dan200.computercraft.api.peripheral.IComputerAccess#mountWritable(String,
* dan200.computercraft.api.filesystem.IMount)
* @see dan200.computercraft.api.filesystem.IMount
*/
public interface IWritableMount extends IMount {
/**
* Creates a directory at a given path inside the virtual file system.
* @param path A file path in normalised format, relative to the mount location. ie:
* "programs/mynewprograms"
*/
public void makeDirectory(String path) throws IOException;
/**
* Deletes a directory at a given path inside the virtual file system.
* @param path A file path in normalised format, relative to the mount location. ie:
* "programs/myoldprograms"
*/
public void delete(String path) throws IOException;
/**
* Opens a file with a given path, and returns an outputstream for writing to it.
* @param path A file path in normalised format, relative to the mount location. ie:
* "programs/myprogram"
* @return a stream for writing to
*/
public OutputStream openForWrite(String path) throws IOException;
/**
* Opens a file with a given path, and returns an outputstream for appending to it.
* @param path A file path in normalised format, relative to the mount location. ie:
* "programs/myprogram"
* @return a stream for writing to
*/
public OutputStream openForAppend(String path) throws IOException;
/**
* Get the ammount of free space on the mount, in bytes. You should decrease this
* value as the user writes to the mount, and write operations should fail once it
* reaches zero.
* @return The ammount of free space, in bytes.
*/
public long getRemainingSpace() throws IOException;
}