Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 .renameTo函数的替代方法_Java_File_Text_Rename_File Writing - Fatal编程技术网

Java .renameTo函数的替代方法

Java .renameTo函数的替代方法,java,file,text,rename,file-writing,Java,File,Text,Rename,File Writing,我一直在尝试使用以下代码重命名java中的文本文件 tempFile.renameTo(inFile) 但是,它似乎没有重命名该文件 我的项目的目标是编辑文本文件中的一行文本。 1.首先读取文件并将该行存储为oldLine。 2.获取编辑的行并将其存储为换行符。 3.将换行符写入临时文件。 4.删除主文件并将临时文件重命名为主文件的名称 是否有此重命名功能的替代方案 用完整代码编辑 try { File inFile = new File("Members.txt");

我一直在尝试使用以下代码重命名java中的文本文件

tempFile.renameTo(inFile)
但是,它似乎没有重命名该文件

我的项目的目标是编辑文本文件中的一行文本。
1.首先读取文件并将该行存储为oldLine。
2.获取编辑的行并将其存储为换行符。
3.将换行符写入临时文件。
4.删除主文件并将临时文件重命名为主文件的名称

是否有此重命名功能的替代方案

用完整代码编辑

   try {
        File inFile = new File("Members.txt");
        File tempFile = new File("MembersTemp.txt");

        BufferedReader BR = new BufferedReader(new FileReader(inFile));
        PrintWriter PW = new PrintWriter(new FileWriter(tempFile));

        inFile.setReadable(true);
        inFile.setWritable(true);
        tempFile.setReadable(true);
        tempFile.setWritable(true);

        String line = null;

        while ((line = BR.readLine()) != null) {

            if (!old.equals(newLine)) {
                //String replace = old.replace(old, newLine);
                PW.println(newLine);
                PW.flush();
            }
        }

        PW.close();
        BR.close();

        if (!tempFile.renameTo(inFile)) {
            JOptionPane.showMessageDialog(
                null,
                "Error",
                "Edit File",
                JOptionPane.WARNING_MESSAGE);
        } else {
              JOptionPane.showMessageDialog(
              null,
              "File saved successfully",
              "Edit File",
              JOptionPane.INFORMATION_MESSAGE);
        }

        dispose();
        new Edit_Member().setVisible(true);

    } catch (IOException | HeadlessException e) {
        e.printStackTrace(); 
        JOptionPane.showMessageDialog(
        null,
        "Catch Error",
        "Edit File",
        JOptionPane.WARNING_MESSAGE);

    }
Path source = tempFile.toPath();
Path newdir = inFile.toPath();
Files.move(source, newdir, REPLACE_EXISTING);
用文件更新。移动

   try {
        File inFile = new File("Members.txt");
        File tempFile = new File("MembersTemp.txt");

        BufferedReader BR = new BufferedReader(new FileReader(inFile));
        PrintWriter PW = new PrintWriter(new FileWriter(tempFile));

        inFile.setReadable(true);
        inFile.setWritable(true);
        tempFile.setReadable(true);
        tempFile.setWritable(true);

        String line = null;

        while ((line = BR.readLine()) != null) {

            if (!old.equals(newLine)) {
                //String replace = old.replace(old, newLine);
                PW.println(newLine);
                PW.flush();
            }
        }

        PW.close();
        BR.close();

        if (!tempFile.renameTo(inFile)) {
            JOptionPane.showMessageDialog(
                null,
                "Error",
                "Edit File",
                JOptionPane.WARNING_MESSAGE);
        } else {
              JOptionPane.showMessageDialog(
              null,
              "File saved successfully",
              "Edit File",
              JOptionPane.INFORMATION_MESSAGE);
        }

        dispose();
        new Edit_Member().setVisible(true);

    } catch (IOException | HeadlessException e) {
        e.printStackTrace(); 
        JOptionPane.showMessageDialog(
        null,
        "Catch Error",
        "Edit File",
        JOptionPane.WARNING_MESSAGE);

    }
Path source = tempFile.toPath();
Path newdir = inFile.toPath();
Files.move(source, newdir, REPLACE_EXISTING);
上面的代码给出了以下错误:

java.nio.file.FileSystemException:Members.txt:进程无法访问该文件,因为它正被另一个进程使用。


我以为我已经关闭了所有的读写器,所以这个错误真的不应该出现。

我不知道在没有看到代码的情况下会出什么问题,但是由于Java SE 7,建议移动/重命名文件的方法是(NIO.2文件API)。

根据您的描述,这很可能是因为您没有正确关闭InputStream。但是没有代码所以。。。请在文件读取循环中创建一个。未定义
换行符
,您的意思是
换行符
?变量换行符将传递给方法。所以它不需要定义。您是否在编辑器/查看器中打开了测试文件?或者以前的调试会话尚未终止?“(an)other process”通常只是一些进程,而不是您正在执行的代码。我已经关闭了Netbeans并重新打开了它,而且似乎没有任何进程在后台运行。但是,该文件似乎仍然没有重命名。即使文本文件位于同一目录中,此操作是否有效?您编写的是先删除主文件。此外,还有一个替换现有选项。在Javadoc中:“将文件移动或重命名为目标文件”我尝试使用Files.Move,但遇到以下问题:java.nio.file.FileSystemException:Members.txt:进程无法访问该文件,因为它正被另一个进程使用。