Hi Long, I assume you are using Native X10 (x10c++). The File IO error handling is quite basic and reports any error on calling fopen as 'FileNotFoundException' - even if the problem is e.g. too many open file descriptors.
The File.lines() method silently creates a FileReader and uses it to open and read the file. However, if you do not explicitly close the reader, the fd will remain open until whenever the FileReader is garbage collected (at some arbitrary future time). Therefore the net result of your code is to open file descriptors until the system limit is reached and fopen crashes with EMFILE. To fix this, try: var file_list:ArrayList[String]=new ArrayList[String](); for( f1 in (0..1000)){ for(f2 in (0..30)){ val f_name=f1.toString()+"_"+f2.toString(); val file=new File(f_name); if(file.exists()) { val reader = file.openRead(); //Console.OUT.println(f1+"_"+f2); for(s in reader.lines()){ file_list.add(s); } reader.close(); } } } Cheers, Josh On 08/01/13 11:01, Long Cheng wrote: > Dear all, > > I tried to read a large number of files into an ArrayList with the > following code: > > var file_list:ArrayList[String]=new ArrayList[String](); > for( f1 in (0..1000)){ > for(f2 in (0..30)){ > val f_name=f1.toString()+"_"+f2.toString(); > val file=new File(f_name); > if(file.exists()) { > //Console.OUT.println(f1+"_"+f2); > for(s in file.lines()){ > file_list.add(s); > } > } > } > } > > But in the implementations I always meet the error: > > Uncaught exception at place 0: x10.lang.MultipleExceptions > x10.io.FileNotFoundException: 50_22 > at x10::lang::CheckedThrowable::fillInStackTrace() > at x10aux::throwException(x10::lang::CheckedThrowable*) > at > x10::io::FileReader__FileInputStream::_constructor(x10::lang::String*) > at x10::io::FileReader__FileInputStream::_make(x10::lang::String*) > at x10::io::FileReader::_constructor(x10::io::File*) > at x10::io::FileReader::_make(x10::io::File*) > at x10::io::File::openRead() > at x10::io::File::lines() > at active_read::main(x10::array::Array<x10::lang::String*>*) > at x10aux::BootStrapClosure::__apply() > at x10::lang::VoidFun_0_0::__apply(x10::lang::VoidFun_0_0*) > at x10::lang::Activity::run() > at x10::lang::Runtime__Worker::loop() > at x10::lang::Runtime__Worker::__apply() > at x10::lang::Runtime__Pool::__apply(int) > at x10::lang::Runtime::start(x10::lang::VoidFun_0_0*) > at > at GC_inner_start_routine > at GC_call_with_stack_base > at > at clone > > Actually the file 50_22 exists. I tried to initialized the size of the > arraylist with a number large enough, and close the filereader after > reading each file as well, but still meet the same error. Is there any > comment about this? > > Thanks, > > Long > > ------------------------------------------------------------------------------ > Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS > and more. Get SQL Server skills now (including 2012) with LearnDevNow - > 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts. > SALE $99.99 this month only - learn more at: > http://p.sf.net/sfu/learnmore_122512 > _______________________________________________ > X10-users mailing list > X10-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x10-users ------------------------------------------------------------------------------ Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS and more. Get SQL Server skills now (including 2012) with LearnDevNow - 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only - learn more at: http://p.sf.net/sfu/learnmore_122512 _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users