package com.fourinone; import java.net.URI; import java.net.URISyntaxException; import java.util.Date; import com.fourinone.FileBatch.TryByteReadAdapter; import com.fourinone.FileBatch.TryByteWriteAdapter; import com.fourinone.FileBatch.TryIntReadAdapter; import com.fourinone.FileBatch.TryIntWriteAdapter; import com.fourinone.FileAdapter; public final class FttpAdapter { //private URI fl = null; private FttpContractor fc; public FttpAdapter(String fttpPath) throws FttpException{ //fl = FttpException.getURI(fttpPath); //fc = FttpContractor.getContractor(fttpPath); this(fttpPath, null); } public FttpAdapter(String fttpPath, String filename) throws FttpException{ //System.out.println("fttpPath:"+fttpPath); fc = FttpContractor.getContractor(fttpPath, filename); //System.out.println("fc:"+fc); } public interface ByteFttpReadAdapter extends TryByteReadAdapter{ public byte[] readAll() throws FttpException;//lockflag?setLock(true) public byte[] readAllSafety() throws FttpException; } public interface IntFttpReadAdapter extends TryIntReadAdapter{ public int[] readIntAll() throws FttpException; public int[] readIntAllSafety() throws FttpException; } public interface FttpReadAdapter extends ByteFttpReadAdapter,IntFttpReadAdapter{} public interface IntFttpWriteAdapter extends TryIntWriteAdapter{ public int writeInt(int[] its) throws FttpException; public int writeIntSafety(int[] its) throws FttpException; /*public void writeListInt(List<Integer> ls) throws FttpException;*/ } public interface ByteFttpWriteAdapter extends TryByteWriteAdapter{ public int write(byte[] bytes) throws FttpException; public int writeSafety(byte[] bytes) throws FttpException; } public interface FttpWriteAdapter extends ByteFttpWriteAdapter,IntFttpWriteAdapter{} public interface FileProperty{ public boolean exists(); public boolean isFile(); public boolean isDirectory(); public boolean isHidden(); public boolean canRead(); public boolean canWrite(); public String getName(); public String getParent(); public String getPath(); public long lastModified(); public Date lastModifiedDate(); public long length(); public String[] list(); public String getPathEncode(); } public interface FttpAdapterOperate extends FttpReadAdapter,FttpWriteAdapter,FileProperty{} public FttpReadAdapter getFttpReader() throws FttpException{//param lock //return new FttpContractor(fl);//.getFttpReadAdapter(f); return fc;//fc.object(); } public ByteFttpReadAdapter getByteFttpReader() throws FttpException{ return getFttpReader(); } public ByteFttpReadAdapter getByteFttpReader(long beginIndex, long bytesNum) throws FttpException{ return getFttpReader(beginIndex, bytesNum); } public IntFttpReadAdapter getIntFttpReader() throws FttpException{ return getFttpReader(); } public IntFttpReadAdapter getIntFttpReader(long beginIndex, long intNum) throws FttpException{ return getFttpReader(beginIndex, intNum); } public FttpReadAdapter getFttpReader(long beginIndex, long bytesNum) throws FttpException{ //return new FttpContractor(fl,beginIndex,bytesNum); /*FttpContractor fcread = fc.object(); fcread.setReadArea(beginIndex, bytesNum); return fcread;*/ fc.setReadArea(beginIndex, bytesNum); return fc; } public ByteFttpWriteAdapter getByteFttpWriter() throws FttpException{ return getFttpWriter(); } public IntFttpWriteAdapter getIntFttpWriter() throws FttpException{ return getFttpWriter(); } public ByteFttpWriteAdapter getByteFttpWriter(long beginIndex, long bytesNum) throws FttpException{ return getFttpWriter(beginIndex, bytesNum); } public IntFttpWriteAdapter getIntFttpWriter(long beginIndex, long intNum) throws FttpException{ return getFttpWriter(beginIndex, intNum); } public FttpWriteAdapter getFttpWriter() throws FttpException{ return fc;//fc.object();//getFttpWriter(-1, -1);//lock } public FttpWriteAdapter getFttpWriter(long beginIndex, long bytesNum) throws FttpException{ //return new FttpContractor(fl,beginIndex,bytesNum); /*FttpContractor fcwrite = fc.object(); fcwrite.setWriteArea(beginIndex, bytesNum); return fcwrite;*/ fc.setWriteArea(beginIndex, bytesNum); return fc; } public FileProperty getProperty() throws FttpException{ fc.acquireProperty(); return fc; } public FileProperty[] getChildProperty() throws FttpException{ return fc.getChildProperty(); } /*public FileProperty[] getChildProperty() throws FttpException{ FileResult[] frarr = fc.getChildProperty(); FttpContractor[] fcs = null; if(frarr!=null&&frarr.length>0){ fcs = new FttpContractor[frarr.length]; for(int i=0;i<frarr.length;i++){ FttpContractor fc = getContractor(); fc.acquireProperty(frarr[i]); fcs[i]=fc; } } return fcs; }*/ public String[] listRoots() throws FttpException{ return fc.listRoots(); } public static String[] fttpRoots(){ return FttpContractor.getContractor().fttpRoots(); } public static String[] fttpRootsPath(String[] roots){ String[] rootspath = null; if(roots!=null){ rootspath = new String[roots.length]; for(int i=0;i<roots.length;i++) rootspath[i]="fttp://"+roots[i]; } return rootspath; } public static String[] fttpRootsPathEncode(String[] roots){ String[] rootspath = fttpRootsPath(roots); if(rootspath!=null){ for(int i=0;i<rootspath.length;i++) rootspath[i]=ObjectBytes.getUtf8UrlString(rootspath[i]);//getUrlString encodeReplace } return rootspath; } public FttpAdapter createFile() throws FttpException{ fc.create(true); return this; } public FttpAdapter createDirectory() throws FttpException{ fc.create(false); return this; } public boolean delete() throws FttpException{ return fc.delete(); } public FttpAdapter copyTo(String topath)throws FttpException{ return copyTo(topath,FileAdapter.m(1)); } public FttpAdapter copyTo(String topath, long every)throws FttpException{ return fc.copy(topath,every)?new FttpAdapter(topath):null;//tryCopy } public Result<FttpAdapter> tryCopyTo(String topath){ return tryCopyTo(topath,FileAdapter.m(1)); } public Result<FttpAdapter> tryCopyTo(String topath, long every){ return fc.tryCopy(topath,every);//tryCopy } public FttpAdapter rename(String newname)throws FttpException{ return fc.rename(newname)?new FttpAdapter(this.getProperty().getParent(),newname):null; } //close() close pool public void close(){ fc = null; } public void closeExit(){ fc.exit(); close(); } public static void main(String[] args) { } }