comparison core/src/luan/modules/IoLuan.java @ 751:558740169005

improve file delete()
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 15 Jul 2016 15:56:19 -0600
parents 85f5444fb7d4
children ea5f3a254b76
comparison
equal deleted inserted replaced
750:f172f1dff4b6 751:558740169005
546 File tmp = File.createTempFile(prefix,suffix,file); 546 File tmp = File.createTempFile(prefix,suffix,file);
547 tmp.deleteOnExit(); 547 tmp.deleteOnExit();
548 return new LuanFile(luan,tmp).table(); 548 return new LuanFile(luan,tmp).table();
549 } 549 }
550 550
551 public void delete() throws LuanException {
552 if( file.exists() )
553 delete(file);
554 }
555
556 private static void delete(File file) throws LuanException {
557 File[] children = file.listFiles();
558 if( children != null ) {
559 for( File child : children ) {
560 delete(child);
561 }
562 }
563 if( !file.delete() )
564 throw new LuanException("couldn't delete file "+file);
565 }
566
551 @Override public LuanTable table() { 567 @Override public LuanTable table() {
552 LuanTable tbl = super.table(); 568 LuanTable tbl = super.table();
553 try { 569 try {
554 tbl.rawPut( "name", new LuanJavaFunction( 570 tbl.rawPut( "name", new LuanJavaFunction(
555 File.class.getMethod( "getName" ), file 571 File.class.getMethod( "getName" ), file
559 ) ); 575 ) );
560 tbl.rawPut( "is_file", new LuanJavaFunction( 576 tbl.rawPut( "is_file", new LuanJavaFunction(
561 File.class.getMethod( "isFile" ), file 577 File.class.getMethod( "isFile" ), file
562 ) ); 578 ) );
563 tbl.rawPut( "delete", new LuanJavaFunction( 579 tbl.rawPut( "delete", new LuanJavaFunction(
564 File.class.getMethod( "delete" ), file 580 LuanFile.class.getMethod( "delete" ), this
565 ) ); 581 ) );
566 tbl.rawPut( "mkdir", new LuanJavaFunction( 582 tbl.rawPut( "mkdir", new LuanJavaFunction(
567 File.class.getMethod( "mkdir" ), file 583 File.class.getMethod( "mkdir" ), file
568 ) ); 584 ) );
569 tbl.rawPut( "mkdirs", new LuanJavaFunction( 585 tbl.rawPut( "mkdirs", new LuanJavaFunction(