Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用java从linux创建文件_Java_Linux - Fatal编程技术网

无法使用java从linux创建文件

无法使用java从linux创建文件,java,linux,Java,Linux,我的要求是从linux机器中放置的文件中读取,更改其内容。 为此,我读取文件,创建临时文件,将原始文件的内容写入临时文件,然后删除原始文件并将临时文件重命名为原始名称。当我在虚拟机上使用它时,它工作得很好,但当我实际尝试在linux机器上运行它时,它就不起作用了。 它没有给出任何错误。但是当我去查看路径中的文件时,它并不存在。下面是我的代码。请提出可能的问题 public class ReadWriteReplace { public static void main(String[] arg

我的要求是从linux机器中放置的文件中读取,更改其内容。 为此,我读取文件,创建临时文件,将原始文件的内容写入临时文件,然后删除原始文件并将临时文件重命名为原始名称。当我在虚拟机上使用它时,它工作得很好,但当我实际尝试在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机器上运行它。

您打算用临时文件替换具体文件吗?如果是这样,你为什么要首先使用临时文件?请检查你的应用程序运行的权限。我想更改“abc”的日期。这是我的意图。为此,我发现上述方法将起作用。首先读取原始文件,更改“abc”的日期,并将所有记录写入临时文件。现在,删除旧文件并将临时文件重命名为旧文件名。请告诉我是否有什么好的方法可以实现这一点。@EvanKnowles,这段代码正在读取甚至从给定路径删除文件。我认为这意味着代码具有读写权限。如果我仍然需要检查权限,请告诉我如何以及在哪里可以检查权限您没有检查您是否成功重命名了文件。我强烈建议不要使用
java.io.File
,在当今时代,它以在出现问题时不抛出错误而闻名。使用
java.nio.file
包,如
路径
文件