黑马程序员技术交流社区

标题: IO流写文件到硬盘之后为什么不能删除文件? [打印本页]

作者: xuehuayous    时间: 2014-4-6 18:31
标题: IO流写文件到硬盘之后为什么不能删除文件?
本帖最后由 xuehuayous 于 2014-4-6 21:52 编辑

写的读取键盘录入然后写到硬盘文件,操作完成之后关闭了文件输入输出流,为什么不能把文件删除?操作中

操作结束

  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;

  7. public class Test{
  8.         public static void main(String[] args) {
  9.                                 
  10.                 BufferedReader bufr = null;
  11.                 BufferedWriter bufw = null;
  12.                 try {
  13.                         bufr = new BufferedReader(new InputStreamReader(System.in));
  14.                         bufw = new BufferedWriter(new FileWriter("Demo.txt", true));
  15.                         
  16.                         String line;
  17.                         while((line=bufr.readLine())!=null) {
  18.                                 bufw.write(line, 0, line.length());
  19.                                 bufw.newLine();
  20.                                 bufw.flush();
  21.                         }
  22.                 } catch (Exception e) {
  23.                         throw new RuntimeException("文件读取创建失败!");
  24.                 } finally {                        
  25.                                 try {
  26.                                         if(bufr!=null) {
  27.                                                 bufr.close();
  28.                                         }                                       
  29.                                 } catch (IOException e) {
  30.                                         System.out.println("读取流关闭失败!");
  31.                                 }
  32.                                 try {
  33.                                         if(bufw!=null) {
  34.                                                 bufw.close();
  35.                                         }
  36.                                 } catch (IOException e) {
  37.                                         System.out.println("输出流关闭失败!");
  38.                         }
  39.                 }
  40.         }
  41. }
复制代码





作者: 多一点    时间: 2014-4-6 20:11
本帖最后由 多一点 于 2014-4-6 21:06 编辑


import java.io.*;

public class Test2{
        public static void main(String[] args) {
                                
                BufferedReader bufr = null;
                BufferedWriter bufw = null;
                try {
                        bufr = new BufferedReader(new InputStreamReader(System.in));
                        bufw = new BufferedWriter(new FileWriter("Demo.txt", true));
                        
                        String line;
                        while((line=bufr.readLine())!=null) {//循环里给个结束标记
                                bufw.write(line, 0, line.length());
                                bufw.newLine();
                                bufw.flush();//
                        }
                } catch (Exception e) {
                        throw new RuntimeException("文件读取创建失败!");
                } finally {                        
                                try {
                                        if(bufr!=null) {
                                                bufr.close();
                                        }                                       
                                } catch (IOException e) {
                                        System.out.println("读取流关闭失败!");
                                }
                                try {
                                        if(bufw!=null) {
                                                bufw.close();
                                        }
                                } catch (IOException e) {
                                        System.out.println("输出流关闭失败!");
                        }
                }
        }
}



作者: xuehuayous    时间: 2014-4-6 20:54
多一点 发表于 2014-4-6 20:11
import java.io.*;

public class Test2{

如果等于空那就是流创建没有成功,那还用关闭?你的逻辑有问题吧
作者: Peach2014    时间: 2014-4-6 20:54
本帖最后由 Peach2014 于 2014-4-6 20:58 编辑

问题原因:其实你的程序根本就停不下来,因为按照你的代码,始终在“while”语句里面进行着循环,而没有执行finally中的语句,即便你强行终止程序,但是程序中的“bufr ”和“bufw”仍然出于开启状态,所以你无法对Demo1.txt进行删除。
解决办法:在while中设置一个结束输入的条件,可以参考一下代码




package study;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class StringDemo{
        public static void main(String[] args) {
                                
                BufferedReader bufr = null;
                BufferedWriter bufw = null;
                try {
                        bufr = new BufferedReader(new InputStreamReader(System.in));
                        bufw = new BufferedWriter(new FileWriter("Demo1.txt", true));
                        
                        String line;
                        while((line=bufr.readLine())!=null) {
                                if("over".equals(line))
                                        break;
                            bufw.write(line, 0, line.length());
                            bufw.newLine();
                            bufw.flush();
                        }
                } catch (Exception e) {
                        throw new RuntimeException("文件读取创建失败!");
                } finally {                        
                                try {
                                        if(bufr!=null) {
                                                bufr.close();
                                        }                                       
                                } catch (IOException e) {
                                        System.out.println("读取流关闭失败!");
                                }
                                try {
                                        if(bufw!=null) {
                                                bufw.close();
                                        }
                                } catch (IOException e) {
                                        System.out.println("输出流关闭失败!");
                                }
                }
        }
}

作者: xuehuayous    时间: 2014-4-6 20:56
Peach2014 发表于 2014-4-6 20:54
package study;

嗯嗯,谢谢,想到这个问题了。
作者: 多一点    时间: 2014-4-6 21:07
xuehuayous 发表于 2014-4-6 20:54
如果等于空那就是流创建没有成功,那还用关闭?你的逻辑有问题吧

我没理解好 多谢同学
里面因该给个跳出循环的标记。
因为你循环没停止,程序还在往里面写东西。
因该不可以删除的、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2