问题描述
这是我的读取代码: public static List<String> addFileToList(String bKFilePath) {BufferedReader bkFile = null;List<String> list = new ArrayList<String>();try {LOG.debug("bKFilePath:"+bKFilePath);boolean isReadable=new File(bKFilePath).canRead();LOG.debug("is file readable:"+isReadable);bkFile = new BufferedReader(new FileReader(bKFilePath));String anotherRs = null;while ((anotherRs = bkFile.readLine()) != null) {LOG.info("fileContent:"+anotherRs+"n");list.add(anotherRs);}LOG.debug("addFileToList complete");} catch (FileNotFoundException e) {LOG.warn("没有找到文件:", e);return null;} catch (IOException e) {LOG.warn("文件读取异常:", e);return null;} catch (RuntimeException e) {LOG.warn("没有文件读写权限:", e);return null;} finally{if(bkFile!=null){try {bkFile.close();} catch (IOException e) {LOG.warn("文件关闭异常:", e);}}} return list;}在Linux系统上碰到的问题是:1、首尾两端日志打印成功:"bKFilePath:","addFileToList complete";2、中间的日志:"fileContent:",一行也没有打印。这个方法理论上是没有错误的,我把文件复制到本地windows环境下测试是能够读取成功的。中间的日志也全部打印。考虑过路径和权限问题,但日志中根本就没有的对应的异常信息。而且经过手工验证,路径是正确的,权限也没有问题,所在文件夹和文件本身分别是:drwxrwxrwx、rwxrwxrwx。但这个文件就是死活读不出来。 问题补充:谢谢各位。我的路径是:/tftpboot/running-config20110823174339.log文件是在Linux下生成的,流也关闭了。昨天又试了下,把文件拷到其他路径,我的用户是head,所以拷到了"/home/head"下,它居然能读取了。但奇怪的是在/tftpboot下我能touch文件也能删除文件(File.delete),但就是不能读文件。
解决方案
liux下传入的路径格式是什么的?贴下你传的路径吧··然后window liunx下路径分隔符不同啊 File.separator设定路径分隔符····
解决方案二:
能删除,却无法读取?还有 LOG.debug("is file readable:"+isReadable); 这个log也不打印啊?
解决方案三:
流没关闭?!
解决方案四:
你读的是个文本文件吗?这个文件是不是在windows下写的?如果是的话执行一下:dos2unix 文件名