package org.smoothbuild.io.fs.mem;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.smoothbuild.io.fs.base.FileSystemException;
import org.smoothbuild.io.fs.base.Path;
public class MemoryFile implements MemoryElement {
private final MemoryDir parent;
private final Path name;
private byte data[];
public MemoryFile(MemoryDir parent, Path name) {
this.parent = parent;
this.name = name;
}
public Path name() {
return name;
}
public MemoryDir parent() {
return parent;
}
public boolean isFile() {
return true;
}
public boolean isDir() {
return false;
}
public boolean hasChild(Path name) {
return false;
}
public MemoryElement child(Path name) {
throw new UnsupportedOperationException();
}
public List<Path> childNames() {
throw new UnsupportedOperationException();
}
public void addChild(MemoryElement element) {
throw new UnsupportedOperationException();
}
public InputStream openInputStream() {
if (data == null) {
throw new FileSystemException("File does not exist");
}
return new ByteArrayInputStream(data);
}
public OutputStream openOutputStream() {
return new MemoryOutputStream();
}
private class MemoryOutputStream extends ByteArrayOutputStream {
public void close() {
MemoryFile.this.data = toByteArray();
}
}
}