package jef.tools.resource; import java.io.BufferedInputStream; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import jef.tools.IOUtils; public class FileResource extends Resource implements IResource { protected File file; protected FileResource(){ super(null); } public FileResource(URL url) { super(url); try { file=new File(url.toURI()); } catch (URISyntaxException e) { System.out.println(url); throw new IllegalArgumentException(e); } catch (IllegalArgumentException e) { System.out.println(url); throw e; } } public FileResource(File file2) { super(null); this.file=file2; try { super.url=file2.toURI().toURL(); } catch (MalformedURLException e) { throw new RuntimeException(e); } } public File getFile(){ return file; } private boolean open; @Override public InputStream openStream(){ try { open=true; return new BufferedInputStream(new FileInputStream(file)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } @Override public BufferedWriter getWriter() throws IOException { return IOUtils.getWriter(file, charset,false); } @Override public boolean isWritable() { return true; } @Override public boolean isReadable() { return file.exists(); } public InputStream getInputStream() throws IOException { return this.openStream(); } public boolean exists() { return file.exists(); } public boolean isOpen() { return open; } public URI getURI() throws IOException { try { return url.toURI(); } catch (URISyntaxException e) { throw new IOException(e); } } public long contentLength() throws IOException { return file.length(); } public long lastModified() throws IOException { return file.lastModified(); } public IResource createRelative(String relativePath) throws IOException { return new FileResource(new File(file,relativePath)); } public String getFilename() { return file.getName(); } public String getDescription() { return "file [" + file.getAbsolutePath() + "]"; } @Override public String toString() { return getDescription(); } @Override public boolean isFile() { return true; } }