您的位置:首页 > 编程语言 > Java开发

第十二章:File类和流

2015-09-21 18:09 441 查看


java.io.File
java.io包下的File类:表示硬盘上的一个文件,File中的方法是用于文件的创建、修改、删除等。
windows中,文件的路径上下级之间用\区分 ,在java中,用\\,第一个是java中的转义字符,第二个是有用的\。
File的构造器:File(String pathname)            参数为文件路径
 File(String parent, String child)参数为父路径,子路径。
 File(File parent, String child) 参数为父路径,子路径。
 
File的主要方法:   boolean createNewFile()创建一个新文件。

  boolean mkdir() / mkdirs()创建新的目录/父目录不存在时直接创建父目录。
 booleandelete()删除文件或者目录 
 voiddeleteOnExit()虚拟机退出时删除文件或者目录
 booleanexists()判断当前文件或者目录是否存在 
 booleanisFile()判断File对象代表的是否是一个文件
 booleanisDirectory()判断File对象代表的是否是一个目录  
 StringgetPath()返回当前File对象的字符串路径
String getName()返回当前File对象的文件名或者目录
String getParent()返回当前File对象的父级目录 
String getAbsolutePath()返回当前File对象的绝对路径 
String[]list()返回当前File对象包含的子目录以及文件



流是数据传输的工具。
按照传输方向不同可分为:
输入流InputStream其子类为FileInputStream。
输出流OutputStream其子类为FileOutputStream。

按照处理数据类型不同区分(字节流可以传输任何信息,字符流只能传输文本信息):
1.字节流(按字节读写)

字节输入流FileInputStream:

FileInputStream构造器
1.FileInputStream(String filename)
2.FileInputStream(File file)
FileInputStream常用方法:
close() 关闭输入流
int read() 读取输入流(返回int值)
int read(byte[]b) 从此输入流中将最多
b.length
个字节的数据读入一个 byte 数组中。
int read(byte[] bs, int off, int len) 从此输入流中将最多
len
个字节的数据读入一个 byte 数组中。

字节输出流FileOutputStream:

FileOutputStream构造器:
FileOutputStream(String path)

FileOutputStream(File file)

FileOutputStream(String path, boolean append)

FileOutputStream(File file, boolean append)
FileOutputStream常用方法
close()

void write(int v)

void write(byte[] bs)

void write(byte[] bs, int off, int len) 

2.字符流(按字符读写):
字符输入流FileReader
FileReader(String  fileName)

close()

int read(char[] cbuf)
FileWriter(String fileName)
字符输出流FileWriteF
FileWriter(String fileName)
close()
write(String value)
按照流的基本功能区分:
1.节点流
2.过滤流

作业:
1.通过流技术将D:\images目录下的某一张图片复制到F:\images目录下

2.通过流技术将D:\images目录下的所有图片复制到F:\images目录下,同时将这些图片名字修改为:原来名称_副本.后缀

3.复制三篇文章的内容到一个文件中,复制开始前,先将复制开始时间写入文件,然后复制某一篇文章,该篇文章复制完成后,再将复制结束时间写入到文件中

参考答案(主要代码):
1.
FileInputStream tupian1=new FileInputStream("d:/images/tupian.bmp");
FileOutputStream tupian2=new FileOutputStream("e:/images/tupian.bmp");
int i=tupian1.read();
while(i!=-1){
tupian2.write(i);
i=tupian1.read();
}
tupian2.close();
tupian1.close();

2.
File f=new File("d:/images");
File[] sf=f.listFiles();
for(int i=0;i<sf.length;i++){
File d=new File("e:/images",sf[i].getName().replace(".","_附件." ));
FileInputStream fd=new FileInputStream(sf[i]);
FileOutputStream fe=new FileOutputStream(d);
int ii=fd.read();
while(ii!=-1){
fe.write(ii);
ii=fd.read();
}
fe.close();
fd.close();
}

3.
File wenzhang=new File("D:/sss.txt");
FileInputStream wenzhang1=new FileInputStream("D:/sss1.txt");
FileInputStream wenzhang2=new FileInputStream("D:/sss2.txt");
FileInputStream wenzhang3=new FileInputStream("D:/sss3.txt");
FileOutputStream wenzhang0=new FileOutputStream("D:/sss.txt",true);
int i1=wenzhang1.read();
int i2=wenzhang2.read();
int i3=wenzhang3.read();
Date d=new Date();
SimpleDateFormat sd=new SimpleDateFormat("   yyyy-MM-dd HH:mm:ss   ");
String s=sd.format(d);
byte[] bd=s.getBytes();
wenzhang0.write(bd);
while(i1!=-1){
wenzhang0.write(i1);
i1=wenzhang1.read();
}
wenzhang0.write(bd);
wenzhang1.close();
while(i2!=-1){
wenzhang0.write(i2);
i2=wenzhang2.read();
}
wenzhang0.write(bd);
wenzhang2.close();
while(i3!=-1){
wenzhang0.write(i3);
i3=wenzhang3.read();
}
wenzhang0.write(bd);
wenzhang3.close();
wenzhang0.close();
System.out.println(new Date(wenzhang.lastModified()));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java File