1 21 package com.db4o.io; 22 23 import java.io.*; 24 25 import com.db4o.*; 26 27 30 public class RandomAccessFileAdapter extends IoAdapter { 31 32 private RandomAccessFile _delegate; 33 34 public RandomAccessFileAdapter(){ 35 } 36 37 protected RandomAccessFileAdapter(String path, boolean lockFile, long initialLength) throws IOException { 38 _delegate = new RandomAccessFile(path, "rw"); 39 if(initialLength>0) { 40 _delegate.seek(initialLength - 1); 41 _delegate.write(new byte[] {0}); 42 } 43 if(lockFile){ 44 Platform4.lockFile(_delegate); 45 } 46 } 47 48 public void close() throws IOException { 49 try { 50 Platform4.unlockFile(_delegate); 51 } catch (Exception e) { 52 } 53 _delegate.close(); 54 } 55 56 public void delete(String path) { 57 new File(path).delete(); 58 } 59 60 public boolean exists(String path){ 61 File existingFile = new File(path); 62 return existingFile.exists() && existingFile.length() > 0; 63 } 64 65 public long getLength() throws IOException { 66 return _delegate.length(); 67 } 68 69 public IoAdapter open(String path, boolean lockFile, long initialLength) throws IOException { 70 return new RandomAccessFileAdapter(path, lockFile, initialLength); 71 } 72 73 public int read(byte[] bytes, int length) throws IOException { 74 return _delegate.read(bytes, 0, length); 75 } 76 77 public void seek(long pos) throws IOException { 78 79 if(DTrace.enabled){ 80 DTrace.REGULAR_SEEK.log(pos); 81 } 82 _delegate.seek(pos); 83 84 } 85 86 public void sync() throws IOException { 87 _delegate.getFD().sync(); 88 } 89 90 public void write(byte[] buffer, int length) throws IOException { 91 _delegate.write(buffer, 0, length); 92 } 93 } 94 | Popular Tags |