Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 操作文件时损坏了文件_Java_File_Io - Fatal编程技术网

Java 操作文件时损坏了文件

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

您好,我正在尝试操作一个文件(将temp复制到orig),但每当我第二次尝试打开transaction_sales.dat文件时,似乎都会出现问题(访问被拒绝)。我该怎么办(((

公共静态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());
        }
}