我的要求是从放置在linux机器上的文件中读取,改变它的内容。 为此,我正在读取文件,创建临时文件,将原始文件的内容写入临时文件,然后删除原始文件并将临时文件重命名为原始名称。当我从VM使用它时这很好用,但是当我真的尝试在linux机器上运行它时它不起作用。 它不会给出任何错误。但是当我去路径中查看文件时,它就不存在了。以下是我的代码。请建议可能出错的地方。
public class ReadWriteReplace {
public static void main(String[] args) throws IOException {
String filepath = "/home/cloudera/Desktop/datefile1";
File file = new File(filepath);
File fout = File.createTempFile("tmp", "");
FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter(fout);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
String division = "abc";
String input = "";
String finaldate = "2015/04/15";
String line = br.readLine();
while(line != null) {
if (line.contains(division.toUpperCase())) {
System.out.println("line :::"+ line);
String [] line1 = line.split(",");
System.out.println("line1[0] :::"+line1[0]);
System.out.println("line1[1] :::"+line1[1]);
System.out.println();
bw.write(line1[0]+","+finaldate+'\n' );
}else{
bw.write(line+'\n');
}
line = br.readLine();
}
br.close();
bw.close();
String foutstring = fout.toString();
System.out.println("foutstring ::"+foutstring);
FileReader fr1 = new FileReader(fout);
BufferedReader br1 = new BufferedReader(fr1);
String line1 = br1.readLine();
System.out.println("line1:::"+line1);
while(line1 != null){
System.out.println("br1 line ::"+line1);
line1 = br1.readLine();
}
br1.close();
File oldFile = new File(filepath);
if(oldFile.delete()){
System.out.println("filedeleted");
fout.renameTo(oldFile);
}
}
}
我的输入文件包含以下数据:
mno,2015/03/14
jkl,2015/03/17
ghi,2015/03/15
abc,2015/03/18
cdf,2015/03/19
修改::
为了清楚起见,我正在为上面的代码创建一个jar,并使用putty在远程linux机器上运行它。