黑马程序员技术交流社区
标题:
文件I/O
[打印本页]
作者:
吴新
时间:
2012-11-25 17:08
标题:
文件I/O
实现复制和重命名文件,不关闭复制时候的fileintputstream和fileoutputstream流情况下,运行程序的时候复制成功了却不能重命名,求解!!!(重命名没有用到这俩个流啊)D:\QQ截图20121125170636.png
作者:
罗忠文
时间:
2012-11-25 17:11
File类:主要提供了对平台磁盘上文件的操作,一些参考资料上也说这个类是与流无关的。里面的方法很简单,直接查文档就可以了。注意mkdirs方法,可以创建多层目录,还有一个length属性,下面创建byte[]的length使用它就可以。
FileInputStream 类:提供了对文件读取流的操作。由于InputStream,OutputStream是针对字节流的,所以读取文件以前先要定义byte[],然后把文件流读取到byte[]里面。
FileOutputStream类:文件输出流操作。
不管是FileInputStream还是FileOutputStream,流已经打开是不会自动关闭的,所以一定要使用手动关闭流。方法是close();
package TestIo;
import java.io.FileInputStream;
import java.io.File;
import java.io.FileOutputStream;
public class TestFileInputStream {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File f = new File("d:\\temp\\read.txt");
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[(int)f.length()];
fis.read(b);
for(int i=0;i<b.length;i++)
{
System.out.print(b[i]);
}
String bb = new String(b);
System.out.println(bb);
boolean a = true;
File ff = new File("d:\\temp\\newread2.txt");
FileOutputStream fos = new FileOutputStream(ff,a);
fos.write(b);
String abc = "abc";
byte[] ab = abc.getBytes();
fos.write(ab);
fis.close();
fos.close();
}
}
作者:
吴新
时间:
2012-11-25 17:17
罗忠文 发表于 2012-11-25 17:11
File类:主要提供了对平台磁盘上文件的操作,一些参考资料上也说这个类是与流无关的。里面的方法很简单,直 ...
不关闭的话都会影响哪些操作呢?
作者:
罗忠文
时间:
2012-11-25 17:43
不关闭的话你的机器很变得很慢的。因为不关闭流,它占得内存越来越大,最后死机
作者:
殷士剑
时间:
2012-11-25 20:02
你观察的很仔细,确实是这样,下面是我实验代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test10 {
/**
* 实现复制和重命名文件,不关闭复制时候的fileintputstream和
* fileoutputstream流情况下,运行程序的时候复制成功了却不能重命名,求解!!!
* (重命名没有用到这俩个流啊)D:\QQ截图20121125170636.png
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File source = new File("E:\\黑马程序员javaEE-Android学习路线图(请使用IE打开).mht");
File dest = new File("E:\\test\\黑马程序员javaEE-Android学习路线图(请使用IE打开).mht");
//拷贝
copy(source, dest);
//重命名
File source1 = new File("E:\\demo\\黑马程序员javaEE-Android学习路线图(请使用IE打开).mht");
System.out.println(renameTo(dest, source1));
}
public static boolean renameTo(File file,File dest) {
return file.renameTo(dest);
}
public static void copy(File source,File dest) {
BufferedInputStream inputfile = null;
BufferedOutputStream outputfile = null;
try {
inputfile = new BufferedInputStream(new FileInputStream(source));
outputfile = new BufferedOutputStream(new FileOutputStream(dest));
byte[] buffer = new byte[1024];
int length = 0;
while((length = inputfile.read(buffer))!=-1){
outputfile.write(buffer, 0, length);
}
//关闭输入、输出流
inputfile.close();
outputfile.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
复制代码
其实这个也不难理解:
renameTo有剪切的功能,你认为一个正在被操作的文件可以被剪切吗?!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2