private String parseContent(String filePath) { StringBuffer sb = new StringBuffer(); BufferedReader reader = null; String tempLine = null; try { reader = new BufferedReader(new InputStreamReader( new FileInputStream(filePath))); while ((tempLine = reader.readLine()) != null) { sb.append(tempLine); } reader.close(); } catch (Exception e) { if (reader != null) { try { reader.close(); } catch (Exception ex) { log(ex); } reader = null; } } finally { if (reader != null) { try { reader.close(); } catch (Exception e) { log(e); } } reader = null; } return sb.toString(); }
该代码有如下地方可以改进:
1 使用StringBuiler.
2 使用标准的IO操作写法。
3 原有代码catch异常后,异常被吞没了,导致有可能返回只读了一半的文件。
4 删除原有代码冗余的close方法调用。
5 原有代码在创建 Reader时过于繁琐,可以简化。
6 原有读取逻辑没有考虑文件中包含\r\n的情况,沟通后确认该文件内容的使用与\r\n无关,可以忽略。
改动如下:
private String parseContent2(String filePath) { StringBuilder sb = new StringBuilder(); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filePath)); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } } catch (Exception e) { log(e); //使用null表示读取异常。 return null; } finally { if (reader != null) { try { reader.close(); } catch (Exception e) { log(e); } } } return sb.toString(); }