永发信息网

java 在获取文件的时候,如何避免获取到正在读写的文件

答案:2  悬赏:50  手机版
解决时间 2021-03-02 01:23
  • 提问者网友:未信
  • 2021-03-01 18:36
我现在需要定时从一个目录中获取文件,然后转移到其他文件夹,再删除源文件,现在出现一个情况,一个比较大的文件是由其他程序写入但还没有写完,我的程序拿到这个文件之后马上就进行操作并删除源文件,导致文件损坏,我现在要求只要是正在被其他程序写入的文件都不去操作它,那如何判断该文件是正在被写入的文件?(注:我不能修改写入文件的程序)
最佳答案
  • 五星知识达人网友:不甚了了
  • 2021-03-01 19:45
加入
try{}catch{}语句
全部回答
  • 1楼网友:由着我着迷
  • 2021-03-01 20:34
最近在做html静态生成,需要从硬盘上把模版文件的内容读出来。然后,替换相关标签写到指定的文件中。无论是读写,都遇到了中文乱码问题。试过多种方法,发现下面一种可以避免中文乱码。(无论读取还是写入一定要进行编码转换。) 1、java读取文件,避免中文乱码。 public static string readfile(string filepathandname) { string filecontent = ""; try { file f = new file(filepathandname); if(f.isfile()&&f.exists()){ inputstreamreader read = new inputstreamreader(new fileinputstream(f),"utf-8"); bufferedreader reader=new bufferedreader(read); string line; while ((line = reader.readline()) != null) { filecontent += line; } read.close(); } } catch (exception e) { system.out.println("读取文件内容操作出错"); e.printstacktrace(); } return filecontent; } 2、java写入文件,避免中文乱码。 public static void writefile(string filepathandname, string filecontent) { try { file f = new file(filepathandname); if (!f.exists()) { f.createnewfile(); } outputstreamwriter write = new outputstreamwriter(new fileoutputstream(f),"utf-8"); bufferedwriter writer=new bufferedwriter(write); //printwriter writer = new printwriter(new bufferedwriter(new filewriter(filepathandname))); //printwriter writer = new printwriter(new filewriter(filepathandname)); writer.write(filecontent); writer.close(); } catch (exception e) { system.out.println("写文件内容操作出错"); e.printstacktrace(); } } 我试过写入的时候用 1、printwriter writer = new printwriter(new bufferedwriter(new filewriter(filepathandname))); 2、printwriter writer = new printwriter(new filewriter(filepathandname)); 都不行。 以上代码经过运行可以避免中文乱码,关键是要编码转换。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯