Mercurial > repos > rliterman > csp2
diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/fileIO/ByteFile.java @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/fileIO/ByteFile.java Tue Mar 18 16:23:26 2025 -0400 @@ -0,0 +1,140 @@ +package fileIO; +import java.io.File; +import java.io.InputStream; +import java.util.ArrayList; + +import shared.Shared; +import structures.ListNum; + + +public abstract class ByteFile { + +// public static final ByteFile makeByteFile(String fname){ +// return makeByteFile(fname, false, true); +// } + + public static final ByteFile makeByteFile1(String fname, boolean allowSubprocess){ + FileFormat ff=FileFormat.testInput(fname, FileFormat.TEXT, null, allowSubprocess, false); + return new ByteFile1(ff); + } + + public static final ByteFile makeByteFile(String fname, boolean allowSubprocess){ + FileFormat ff=FileFormat.testInput(fname, FileFormat.TEXT, null, allowSubprocess, false); + return makeByteFile(ff); + } + + public static final ByteFile makeByteFile(FileFormat ff){ + return makeByteFile(ff, 0); + } + + public static final ByteFile makeByteFile(FileFormat ff, int type){ + if(type==1){return new ByteFile1(ff);} + if(type==2){return new ByteFile2(ff);} + if(!Shared.LOW_MEMORY && (FORCE_MODE_BF2 || (!FORCE_MODE_BF1 && Shared.threads()>4/* && (ReadWrite.isCompressed(fname) || ReadWrite.isSam(fname))*/))){ +// if(allowSubprocess && ((ReadWrite.USE_UNPIGZ || ReadWrite.USE_GUNZIP) && (fname.endsWith(".gz") || fname.endsWith(".gzip")))){} + return new ByteFile2(ff); + } +// if(FORCE_MODE_BF3){return new QuickFile(ff);} + return new ByteFile1(ff); + } + + protected ByteFile(FileFormat ff_){ + ff=ff_; + assert(ff.read()) : ff; + } + + public final ArrayList<byte[]> toByteLines(){ + + byte[] s=null; + ArrayList<byte[]> list=new ArrayList<byte[]>(4096); + + for(s=nextLine(); s!=null; s=nextLine()){ + list.add(s); + } + + return list; + } + + public static final ArrayList<byte[]> toLines(FileFormat ff){ + ByteFile bf=makeByteFile(ff); + ArrayList<byte[]> lines=bf.toByteLines(); + bf.close(); + return lines; + } + + public static final ArrayList<byte[]> toLines(String fname){ + FileFormat ff=FileFormat.testInput(fname, FileFormat.TEXT, null, true, false); + return toLines(ff); + } + + public final long countLines(){ + byte[] s=null; + long count=0; + for(s=nextLine(); s!=null; s=nextLine()){count++;} + reset(); + + return count; + } + + public abstract void reset(); + final void superReset(){ + nextID=0; + } + + public synchronized final ListNum<byte[]> nextList(){ + byte[] line=nextLine(); + if(line==null){return null;} + ArrayList<byte[]> list=new ArrayList<byte[]>(200); + list.add(line); + for(int i=1; i<200; i++){ + line=nextLine(); + if(line==null){break;} + list.add(line); + } + ListNum<byte[]> ln=new ListNum<byte[]>(list, nextID); + nextID++; + return ln; + } + + public final boolean exists(){ + return name().equals("stdin") || name().startsWith("stdin.") || name().startsWith("jar:") || new File(name()).exists(); //TODO Ugly and unsafe hack for files in jars + } + + public abstract InputStream is(); + public abstract long lineNum(); + + /** Returns true if there was an error */ + public abstract boolean close(); + + public abstract byte[] nextLine(); + +// public final void pushBack(byte[] line){ +// assert(pushBack==null); +// pushBack=line; +// } + + public abstract void pushBack(byte[] line); + + public abstract boolean isOpen(); + + public final String name(){return ff.name();} + public final boolean allowSubprocess(){return ff.allowSubprocess();} + + public final FileFormat ff; + + /** Force usage of ByteFile1 */ + public static boolean FORCE_MODE_BF1=false;//!(Data.GENEPOOL || Data.DENOVO || Data.CORI || Shared.WINDOWS); + + /** Force usage of ByteFile2 */ + public static boolean FORCE_MODE_BF2=false; + + /** Unused */ + @Deprecated + public static boolean FORCE_MODE_BF3=false; + + protected final static byte slashr='\r', slashn='\n', carrot='>', plus='+', at='@';//, tab='\t'; + +// byte[] pushBack=null; + private long nextID=0; + +}