public boolean copyFile( String oldFile, String newFile )
{
boolean rtn = false; try
{
System.out.println( "" + "cmd /c copy " + oldFile + " " + newFile );
Runtime.getRuntime().exec( "cmd /c copy " + oldFile + " " + newFile );
rtn = true;
}
catch ( Exception e )
{
log.error( e );
} return rtn;
}
public void deleteFile( String deleteFile )
{
try
{
File file = new File( deleteFile );
file.delete();
}
catch ( Exception e )
{
log.error( e );
}
}
copyFile和deleteFile分开单独调试均是成功的,但是我在一起调用的时候,先调用copyFile,成功后再调用deleteFile,却出现一个很奇怪的问题,就是文件还未被复制就已经被删除了,请教原因?boolean bl = this.copyFile( FileConfig.PATH_RECEIVE + File.separator + fileName, FileConfig.PATH_BACKUP + File.separator + prefixName + dt + postfixName );if ( bl )
//删除已复制的文件
this.deleteFile( FileConfig.PATH_RECEIVE + File.separator + fileName );
{
boolean rtn = false; try
{
System.out.println( "" + "cmd /c copy " + oldFile + " " + newFile );
Runtime.getRuntime().exec( "cmd /c copy " + oldFile + " " + newFile );
rtn = true;
}
catch ( Exception e )
{
log.error( e );
} return rtn;
}
public void deleteFile( String deleteFile )
{
try
{
File file = new File( deleteFile );
file.delete();
}
catch ( Exception e )
{
log.error( e );
}
}
copyFile和deleteFile分开单独调试均是成功的,但是我在一起调用的时候,先调用copyFile,成功后再调用deleteFile,却出现一个很奇怪的问题,就是文件还未被复制就已经被删除了,请教原因?boolean bl = this.copyFile( FileConfig.PATH_RECEIVE + File.separator + fileName, FileConfig.PATH_BACKUP + File.separator + prefixName + dt + postfixName );if ( bl )
//删除已复制的文件
this.deleteFile( FileConfig.PATH_RECEIVE + File.separator + fileName );
是创建一个新进程,创建完之后就立即返回,这时copyFile( String oldFile, String newFile )也返回,也就是Runtime.getRuntime().exec( "cmd /c copy " + oldFile + " " + newFile );和this.deleteFile( FileConfig.PATH_RECEIVE + File.separator + fileName );是两个并行进行的进程,哪个先执行还不确定,就出现了先删除的情况。