2 * Copyright (C) 2015 Roland Haeder
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.jcore.database.file;
19 import java.io.FileNotFoundException;
20 import java.io.IOException;
21 import java.io.RandomAccessFile;
22 import org.mxchange.jcore.BaseFrameworkSystem;
25 * This implementation of SynchronizeableFile provides synchronized access on the RandomAccessFile
26 instance. This implementation is thread-safe, therefor.
28 * @author Roland Haeder
30 public class DatabaseFile extends BaseFrameworkSystem implements SynchronizeableFile {
32 * The actual file instance
34 private final RandomAccessFile file;
37 * A constructor accepting a full-qualified file name (FQFN).
38 * @param fqfn Full-qualified file name
39 * @throws FileNotFoundException
41 public DatabaseFile (final String fqfn) throws FileNotFoundException {
43 this.file = new RandomAccessFile(fqfn, "rw"); //NOI18N
47 public void close () throws IOException{
48 synchronized (this.file) {
54 public long getFilePointer () throws IOException {
55 synchronized (this.file) {
56 return this.file.getFilePointer();
61 public long length () throws IOException {
62 synchronized (this.file) {
63 return this.file.length();
68 public String readLine () throws IOException {
69 synchronized (this.file) {
70 return this.file.readLine();
75 public void seek (final long i) throws IOException {
76 synchronized (this.file) {
82 public void writeBytes (final String string) throws IOException {
83 synchronized (this.file) {
84 this.file.writeBytes(string);