p1/machine/OpenFileWithPosition.java

59 lines
1.4 KiB
Java

// PART OF THE MACHINE SIMULATION. DO NOT CHANGE.
package nachos.machine;
/**
* An <tt>OpenFile</tt> that maintains a current file position.
*/
public abstract class OpenFileWithPosition extends OpenFile {
/**
* Allocate a new <tt>OpenFileWithPosition</tt> with the specified name on
* the specified file system.
*
* @param fileSystem the file system to which this file belongs.
* @param name the name of the file, on that file system.
*/
public OpenFileWithPosition(FileSystem fileSystem, String name) {
super(fileSystem, name);
}
/**
* Allocate a new unnamed <tt>OpenFileWithPosition</tt> that is not
* associated with any file system.
*/
public OpenFileWithPosition() {
super();
}
public void seek(int position) {
this.position = position;
}
public int tell() {
return position;
}
public int read(byte[] buf, int offset, int length) {
int amount = read(position, buf, offset, length);
if (amount == -1)
return -1;
position += amount;
return amount;
}
public int write(byte[] buf, int offset, int length) {
int amount = write(position, buf, offset, length);
if (amount == -1)
return -1;
position += amount;
return amount;
}
/**
* The current value of the file pointer.
*/
protected int position = 0;
}