2016-07-28 71 views
0

我想用相同的尝试资源来读取和写入非常大的文件。请尝试使用资源来处理其正文中抛出的异常。使用试用资源读取和写入文件

try (Stream<String> stream = Files.lines(Paths.get("source.txt"), Charset.defaultCharset()); 
      BufferedWriter writer = Files.newBufferedWriter(Paths.get("dest.txt"))) { 
     stream.map(String::trim).map(String::toUpperCase).forEach(writer::write); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

回答

1

拉姆达不能与检查的异常应对这样(写::写抛出IOException异常)

不幸的是,在流利用这一点,你必须把它包在这一lambda相当丑陋:

try (
    Stream<String> stream = Files.lines(Paths.get("source.txt"), Charset.defaultCharset()); 
    BufferedWriter writer = Files.newBufferedWriter(Paths.get("dest.txt"))) { 
    stream.map(String::trim) 
    .map(String::toUpperCase) 
    .forEach(s -> { 
     try { 
      writer.write(s); 
     } catch(IOException e) { 
      throw new RuntimeException(e); 
     } 
    }); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

感谢@mtj,它的工作原理,但对可读性不好 – ravthiru