created mirror
This commit is contained in:
91
Java/storage/DirStreamSet.java
Normal file
91
Java/storage/DirStreamSet.java
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
DirStreamSet.java
|
||||
*
|
||||
* Copyright (c) 2000, Ted Nelson and Tuomas Lukka
|
||||
*
|
||||
* You may use and distribute under the terms of either the GNU Lesser
|
||||
* General Public License, either version 2 of the license or,
|
||||
* at your choice, any later version. Alternatively, you may use and
|
||||
* distribute under the terms of the XPL.
|
||||
*
|
||||
* See the LICENSE.lgpl and LICENSE.xpl files for the specific terms of
|
||||
* the licenses.
|
||||
*
|
||||
* This software is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the README
|
||||
* file for more details.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Written by Tuomas Lukka, locking by Antti-Juhani Kaijanaho
|
||||
*/
|
||||
package org.gzigzag;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
|
||||
/** A directory implementation of StreamSet
|
||||
*/
|
||||
|
||||
public class DirStreamSet extends StreamSet {
|
||||
public static final String rcsid = "$Id: DirStreamSet.java,v 1.5 2000/09/18 14:28:22 tjl Exp $";
|
||||
File dir;
|
||||
|
||||
public InputStream getInputStream(String id) {
|
||||
try {
|
||||
File f = new File(dir, id);
|
||||
if(!f.exists()) return null;
|
||||
if(!f.canRead()) throw new ZZFatalError("Can't read file");
|
||||
return new BufferedInputStream(
|
||||
new FileInputStream(f), 4096);
|
||||
} catch(Exception e) {
|
||||
ZZLogger.exc(e);
|
||||
throw new ZZFatalError("File problem");
|
||||
}
|
||||
}
|
||||
|
||||
public OutputStream getAppendStream(String id) {
|
||||
try {
|
||||
File f = new File(dir, id);
|
||||
return new BufferedOutputStream(
|
||||
new FileOutputStream(f.getPath(), true));
|
||||
} catch(Exception e) {
|
||||
ZZLogger.exc(e);
|
||||
throw new ZZFatalError("File problem");
|
||||
}
|
||||
}
|
||||
public boolean exists(String id) {
|
||||
File fn = new File(dir, id);
|
||||
return fn.exists();
|
||||
}
|
||||
|
||||
public Writable getWritable(String id) {
|
||||
if(id == null || id.equals(""))
|
||||
throw new ZZError("Can't use writables with null or empty name");
|
||||
try {
|
||||
File fn = new File(dir, id);
|
||||
final RandomAccessFile f = new RandomAccessFile(fn, "rw");
|
||||
return new FileWritable(f) ;
|
||||
} catch(Exception e) {
|
||||
ZZLogger.exc(e);
|
||||
throw new ZZError(" "+e);
|
||||
}
|
||||
}
|
||||
|
||||
public DirStreamSet(File dir0) {
|
||||
try {
|
||||
dir = dir0;
|
||||
if(dir.exists() && !dir.isDirectory()) {
|
||||
throw new ZZError("MUST BE DIRECTORY!!!! "+dir);
|
||||
}
|
||||
if(!dir.exists()) {
|
||||
dir.mkdirs();
|
||||
}
|
||||
} catch(Exception e) {
|
||||
ZZLogger.exc(e);
|
||||
throw new ZZError(" "+e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user