第十二章:File类和流

  1. 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对象包含的子目录以及文件

  • 流是数据传输的工具。
  • 按照传输方向不同可分为:
    1. 输入流InputStream其子类为FileInputStream
    2. 输出流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()));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值