Java使用renameTo(文件)重命名方法中的文件

时间:2016-05-22 17:28:37

标签: java

我正在使用此方法将具有更改信息的文件复制到新文件。 我只是附上这段代码(按预期工作),万一我的无知超出了我的期望。

public void Writedevices(String Start)throws IOException{
                File S = null;
                File D = null;
                BufferedReader reader = null;
                String line;
                BufferedWriter writer = null;
                PrintWriter Newfile = new PrintWriter("Destination.txt","UTF-8");
                int i=0;
                try{
                        S = new File(Start);
                        D = new File("Destination.txt");
                    }
                    catch (NullPointerException e){
                    System.err.println("File not found.");
                    }

                try{
                    reader = new BufferedReader(new FileReader(S));
                    writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(D), "utf-8"));
                    line = reader.readLine();
                    while(line != null){
                        if(!line.toLowerCase().contains("pieces")){
                            writer.write(line);
                            writer.append(System.getProperty("line.separator"));
                        }
                        else{
                            writer.write("            PIECES "+Availability.get(i));
                            writer.append(System.getProperty("line.separator"));
                            i++;
                        }
                        line=reader.readLine();
                    }
                }  
                catch (FileNotFoundException e ){
                System.err.println("Error opening file!");
                }
                finally{
                    writer.close();
                    reader.close();
                }

这是我遇到问题的地方。起始文件会删除,但最终正确更改的文件不会按预期重命名。

S.delete();
                File Name = new File("Available_Devices.txt");
                if(D.renameTo(Name)){
                System.out.println("Device list availability update succesfull.");
                        }
            }

1 个答案:

答案 0 :(得分:0)

我可以确认下面执行的代码结果为:

  • "Source.txt"文件被删除
  • "Destination.txt"已创建并包含预期的字符
  • "Destination.txt"被重命名为"Available_Devices.txt",保持其所有数据的完整性

如果这对你的系统不起作用,请检查你的java程序是否有权对文件进行必要的操作(如果你在linux上尝试用sudo运行你的程序?)

如果您的问题有所不同,请详细说明。

package tempProject;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class FileTransformer2 {
    public static void main(String[] args) {
        try {
            Writedevices("Source.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void Writedevices(String Start) throws IOException {
        File S = null;
        File D = null;
        BufferedReader reader = null;
        String line;
        BufferedWriter writer = null;
        int i = 0;
        try {
            S = new File(Start);
            D = new File("Destination.txt");
        } catch (NullPointerException e) {
            System.err.println("File not found.");
        }

        try {
            reader = new BufferedReader(new FileReader(S));
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(D), "utf-8"));
            line = reader.readLine();
            while (line != null) {
                if (!line.toLowerCase().contains("pieces")) {
                    writer.write(line);
                    writer.append(System.getProperty("line.separator"));
                } else {
                    // writer.write(" PIECES "+Availability.get(i));
                    writer.append(System.getProperty("line.separator"));
                    i++;
                }
                line = reader.readLine();
            }

        } catch (FileNotFoundException e) {
            System.err.println("Error opening file!");
        } finally {
            writer.close();
            reader.close();

        }

        S.delete();
        File Name = new File("Available_Devices.txt");
        if(D.renameTo(Name)){
        System.out.println("Device list availability update succesfull.");
                }


    }
}