KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > io > RandomAccessFileAdapter


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com
2
3 This file is part of the db4o open source object database.
4
5 db4o is free software; you can redistribute it and/or modify it under
6 the terms of version 2 of the GNU General Public License as published
7 by the Free Software Foundation and as clarified by db4objects' GPL
8 interpretation policy, available at
9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11 Suite 350, San Mateo, CA 94403, USA.
12
13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

21 package com.db4o.io;
22
23 import java.io.*;
24
25 import com.db4o.*;
26
27 /**
28  * IO adapter for random access files.
29  */

30 public class RandomAccessFileAdapter extends IoAdapter {
31
32     private RandomAccessFile _delegate;
33
34     public RandomAccessFileAdapter(){
35     }
36
37     protected RandomAccessFileAdapter(String JavaDoc 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 JavaDoc e) {
52         }
53         _delegate.close();
54     }
55     
56     public void delete(String JavaDoc path) {
57         new File(path).delete();
58     }
59
60     public boolean exists(String JavaDoc 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 JavaDoc 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