这个程序的目的是把键盘输入的字节先存到临时文件letter.txt里面,然后再从里面读出来,写放line.txt文件里,结果读写没问题,就是临时文件letter.txt无法删除!!这是什么原因??
import java.io.*;
public class TestFile {    public static void main(String[] args) {
        int b,c;
        byte[] buffer = new byte[100];
        File f = new File("G:\\com.gknl");
        File fTemp = null;
        try {
            fTemp=File.createTempFile("letter",".txt",f);
            System.out.println("输入一行文本,并存入磁盘:");
            b = System.in.read(buffer);    
            FileOutputStream writeFile = new FileOutputStream(fTemp);
            writeFile.write(buffer,0,b);
            FileInputStream In = new FileInputStream(fTemp);
            FileOutputStream Out = new FileOutputStream("G:\\com.gknl\\line.txt");
            while((c=In.read())!=-1){
                Out.write(c);
            }
            In.close();
            fTemp.deleteOnExit();
            System.out.println("输入完毕!!");        } catch (IOException e1) {
            e1.printStackTrace();
        }
        
        
           
    }}

解决方案 »

  1.   

    API上说要虚拟机终止时才会删除,那要什么才会终止呢,怎样才算了终止呢?
      

  2.   

    最简单的办法,去任务管理器关闭javaw.exe进程
      

  3.   

    应该是代码的问题
    你先调用了close()
    此方法解释为:关闭此文件输入流并释放与此流有关的所有系统资源所以这个时候你对fTemp的操作已经没有效果
      

  4.   

    输入输出流用完都要关闭
    你的writeFile流用完并没有关闭因此那个临时文件一直再用着所以不能删除
    我试过了 你将writeFile流用完之后关闭就可以了我将G盘改为了F盘
    import java.io.*;
    public class TestFile {    public static void main(String[] args) {
            int b,c;
            byte[] buffer = new byte[100];
            File f = new File("F:\\com.gknl");
            File fTemp = null;
            try {
                fTemp=File.createTempFile("letter",".txt",f);
                System.out.println("输入一行文本,并存入磁盘:");
                b = System.in.read(buffer);    
                FileOutputStream writeFile = new FileOutputStream(fTemp);
                writeFile.write(buffer,0,b);
                //在此处关闭writeFile流
       writeFile.close();
                FileInputStream In = new FileInputStream(fTemp);
                FileOutputStream Out = new FileOutputStream("F:\\com.gknl\\line.txt");
                while((c=In.read())!=-1){
                    Out.write(c);
                }
                //Out.close();
                fTemp.deleteOnExit();In.close();
                System.out.println("输入完毕!!");        } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            
               
        }}