package com.rectang.xsm.io;
import java.io.*;
import com.rectang.xsm.site.Site;
public class LocalPublishedFile
extends PublishedFile
{
public LocalPublishedFile( Site site, String fileName )
{
super( site, fileName );
}
public OutputStream getOutputStream()
throws IOException
{
return new FileOutputStream( new File( file ) );
}
public String toString()
{
return "Local file: " + file;
}
public boolean exists()
{
return (new java.io.File( file )).exists();
}
public boolean mkparentdirs()
{
if ( (new File( (new java.io.File( file )).getParent() )).exists() )
{
return true;
}
return (new java.io.File( (new java.io.File( file )).getParent() )).mkdirs();
}
public boolean mkdir()
{
return (new File( file )).mkdir();
}
public boolean delete()
{
return deleteDir( new File( file ) );
}
public boolean rename( String newName )
{
String oldPath = file;
setFile( newName );
mkparentdirs();
return (new File( oldPath )).renameTo( new File( file ) );
}
static private boolean deleteDir( File path )
{
if ( !path.exists() )
{
return true;
}
File[] files = path.listFiles();
if ( files != null )
{
for ( int i = 0; i < files.length; i++ )
{
if ( files[i].isDirectory() )
{
deleteDir( files[i] );
}
else
{
files[i].delete();
}
}
}
return (path.delete());
}
public void uploadFile( File f )
{
uploadFile( f, true );
}
public void uploadFile( File f, boolean delete )
{
try
{
mkparentdirs();
if ( delete )
{
f.renameTo( new File( file ) );
}
else
{
(new com.rectang.io.File( f )).copyTo( file );
}
}
catch ( Exception io )
{
io.printStackTrace();
}
}
public boolean isDirectory()
{
return (new File( file )).isDirectory();
}
public long length()
{
return (new File( file )).length();
}
}