59 lines
1.4 KiB
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;
|
|
}
|