ext2file.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 89 行
JAVA
89 行
/*
* $Id: Ext2File.java,v 1.3 2003/12/26 08:11:03 epr Exp $
*/
package org.jnode.fs.ext2;
import java.io.IOException;
import org.jnode.fs.FSFile;
import org.jnode.fs.FileSystem;
/**
* @author Andras Nagy
*/
public class Ext2File implements FSFile {
INode iNode;
boolean valid;
public Ext2File(INode iNode) {
this.iNode=iNode;
valid = true;
}
/**
* @see org.jnode.fs.FSFile#getLength()
*/
public long getLength() {
return iNode.getSize();
}
/**
* @see org.jnode.fs.FSFile#setLength(long)
*/
public void setLength(long length) throws IOException {
throw new IOException("EXT2 implementation is currently readonly");
}
/**
* @see org.jnode.fs.FSFile#read(long, byte[], int, int)
*/
public void read(long fileOffset, byte[] dest, int off, int len) throws IOException {
if(len+off>getLength())
throw new IOException("Can't read past the file!");
long blockSize = iNode.getExt2FileSystem().getBlockSize();
long bytesRead=0;
while( bytesRead < len ) {
long blockNr = (fileOffset+bytesRead) / blockSize;
long blockOffset = (fileOffset+bytesRead) % blockSize;
long copyLength = Math.min(len-bytesRead, blockSize - blockOffset);
System.arraycopy( iNode.getDataBlock(blockNr), (int)blockOffset,
dest, off+(int)bytesRead, (int)copyLength);
bytesRead += copyLength;
}
}
/**
* @see org.jnode.fs.FSFile#write(long, byte[], int, int)
*/
public void write(long fileOffset, byte[] src, int off, int len) throws IOException {
throw new IOException("EXT2 implementation is currently readonly");
}
/**
* @see org.jnode.fs.FSObject#isValid()
*/
public boolean isValid() {
return valid;
}
/**
* @see org.jnode.fs.FSObject#getFileSystem()
*/
public FileSystem getFileSystem() {
return null;
}
/**
* Sets the valid status.
* @param valid The valid status to set
*/
public void setValid(boolean valid) {
this.valid = valid;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?