我正在使用此方法将具有更改信息的文件复制到新文件。 我只是附上这段代码(按预期工作),万一我的无知超出了我的期望。
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.");
}
}
答案 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.");
}
}
}