Java 操作文件时损坏了文件
您好,我正在尝试操作一个文件(将temp复制到orig),但每当我第二次尝试打开transaction_sales.dat文件时,似乎都会出现问题(访问被拒绝)。我该怎么办(((Java 操作文件时损坏了文件,java,file,io,Java,File,Io,您好,我正在尝试操作一个文件(将temp复制到orig),但每当我第二次尝试打开transaction_sales.dat文件时,似乎都会出现问题(访问被拒绝)。我该怎么办((( 公共静态void writeFile(){ 路径文件=null; 路径file2=null; OutputStream输出=null; BufferedWriter=null; InputStream输入=null; BufferedReader reader=null; String[]strReaderAssign
公共静态void writeFile(){
路径文件=null;
路径file2=null;
OutputStream输出=null;
BufferedWriter=null;
InputStream输入=null;
BufferedReader reader=null;
String[]strReaderAssign=新字符串[10000];//用于读取文件
字符串strReader=null;
int strike=0;//计数器
尝试{//未完成
file=path.get(“transaction_sales.dat”);
output=newbufferedoutputstream(Files.newOutputStream(file,CREATE));
writer=new BufferedWriter(new OutputStreamWriter(output));
输入=新的BufferedInputStream(Files.newInputStream(file));
reader=新的BufferedReader(新的InputStreamReader(输入));
if(reader.readLine()==null){//如果文件为空
writer.write(strHolder,0,strHolder.length());//写入文件
writer.close();//关闭文件
reader.close();//关闭读取文件
}
else{//写入临时文件
file=path.get(“transaction_sales.dat”);
file2=path.get(“transaction_sales_temp.dat”);//临时文件
output=newbufferedoutputstream(Files.newOutputStream(file2));
writer=new BufferedWriter(new OutputStreamWriter(output));
writer.write((strHolder),0,strHolder.length());//写入临时文件
对于(int i=0;i<10;i++){
writer.newLine();//将新行写入文件10x
}
writer.close();//关闭文件
试一试{
file=path.get(“transaction_sales.dat”);//重新读取文件中的更新数据
输入=新的BufferedInputStream(Files.newInputStream(file));
reader=新的BufferedReader(新的InputStreamReader(输入));
while((strReader=reader.readLine())!=null){
strreadAssign[strike]=strReader;//分配给数组
strike++;//增量
}
strike=0;//重置值
reader.close();//关闭文件
//附加文件
output=newbufferedoutputstream(Files.newOutputStream(file2,APPEND));
writer=new BufferedWriter(new OutputStreamWriter(output));
for(int j=0;(strreadassign[j]!=null);j++){
writer.write(strreadersign[j]);
writer.newLine();
}
//重置值
对于(int j=0;j
我读对了吗:您创建了这个文件,并为它创建了一个BufferedWriter,然后他们立即为它创建了一个BufferedReader?请确定这个程序尝试打开文件的各种时间中哪一次失败。
public static void writeFile() {
Path file = null;
Path file2 = null;
OutputStream output = null;
BufferedWriter writer = null;
InputStream input = null;
BufferedReader reader = null;
String[] strReaderAssign = new String[10000]; // for reading files
String strReader = null;
int strike = 0; // counter
try { // UNFINISHED
file = Paths.get("transaction_sales.dat");
output = new BufferedOutputStream(Files.newOutputStream(file, CREATE));
writer = new BufferedWriter(new OutputStreamWriter(output));
input = new BufferedInputStream(Files.newInputStream(file));
reader = new BufferedReader(new InputStreamReader(input));
if(reader.readLine() == null) { // if file is empty
writer.write(strHolder, 0, strHolder.length()); // writes to file
writer.close(); // closes file
reader.close(); // closes read file
}
else { // write to temporary file
file = Paths.get("transaction_sales.dat");
file2 = Paths.get("transaction_sales_temp.dat"); // temporary file
output = new BufferedOutputStream(Files.newOutputStream(file2));
writer = new BufferedWriter(new OutputStreamWriter(output));
writer.write((strHolder), 0, strHolder.length()); // writes to temp file
for(int i = 0; i < 10; i++) {
writer.newLine(); // writes new line to file 10x
}
writer.close(); // closes file
try {
file = Paths.get("transaction_sales.dat"); // re-reads updated data in a file
input = new BufferedInputStream(Files.newInputStream(file));
reader = new BufferedReader(new InputStreamReader(input));
while((strReader = reader.readLine()) != null) {
strReaderAssign[strike] = strReader; // assigns to array
strike++; // increment
}
strike = 0; // resets value
reader.close(); // closes file
// appends file
output = new BufferedOutputStream(Files.newOutputStream(file2, APPEND));
writer = new BufferedWriter(new OutputStreamWriter(output));
for(int j = 0; (strReaderAssign[j] != null); j++) {
writer.write(strReaderAssign[j]);
writer.newLine();
}
// resets value
for(int j = 0; j < strReaderAssign.length; j++) {
strReaderAssign[j] = null;
}
writer.close(); // closes file
file = Paths.get("transaction_sales.dat");
file2 = Paths.get("transaction_sales_temp.dat");
Files.copy(file2, file, REPLACE_EXISTING);
Files.delete(file);
}
catch(IOException d) {
System.out.println(d.getMessage());
}
}
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}