标题:[求助]关于文件操作的问题!
取消只看楼主
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
 问题点数:0 回复次数:7 
[求助]关于文件操作的问题!

这个程序的目的是把键盘输入的字节先存到临时文件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();
}



}

}

搜索更多相关主题的帖子: 文件 txt letter File 
2007-07-29 22:45
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 
试过了,还是不行!我觉得不可能错误的啊,怎么会这样

2007-07-29 23:06
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 

那是临时文件,为是让这个临时文件不跟现存的文件名有冲突,所以java自动在后面添加了随机数


2007-07-29 23:44
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 
结果是这样的
输入一行文本,并存入磁盘:
fgs g
G:\letter42374.txt
输入完毕!!
这说明文件名都给打印出来了,怎么会调用fTemp.deleteOnExit();删不了呢

2007-07-29 23:55
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 
既然System.out.println(fTemp.getAbsolutePath());能够打印出这个带有随机数的文件,那么fTemp.deleteOnExit();也就能够删除了啊

2007-07-30 00:06
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 
还是删不了的,API上说那个deleteOnExit()要在JVM终止的时候才会执行删除命令,要什么时候才会终止JVM,怎样才能终止他呢.

2007-07-30 10:55
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 

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:");
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:\\line.txt");
while((c=In.read())!=-1){
Out.write(c);
}
// File g = new File("G:\\line.txt");
Out.flush();
In.close();
Out.close();
System.out.println(fTemp.getAbsolutePath());
fTemp.deleteOnExit();
System.out.println("输入完毕!!");
} catch (IOException e1) {
e1.printStackTrace();
}



}

}


2007-07-30 10:55
gknl
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-29
得分:0 

OK !! 搞定!非常感谢!


2007-07-30 22:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-159026-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.144311 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved