黑马程序员_java IO流

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------


 

blog_4_1File类

(1)基本概述

在IO流中,我们最常见的功能就是上传或者下载文件。为了更方便的对文件进行操作,java就提供了一个File类供我们使用。

(2)File类的构造方法和功能

构造方法有四种如下:

              A:File file = new File("d:\\a.txt");

              B:File file = new File("d:\\","a.txt");\\其中”d:\\”和”a.txt”要进行拼接

              C:File file = new File("d:\\");

              D:File file2 = new File(file,"a.txt");\\其中file和”a.txt”要进行拼接

常用的功能有:

A:创建功能

创建文件:createNewFile() 、创建文件夹:mkdir(),mkdirs()

B:删除功能

删除文件或者文件夹:delete()

C:重命名功能

renameTo()注意当同路径只是改名,当不同路径时相当于:剪切+改名

如:

File oldFile = new File("eee\\a.txt");
 File newFile =new File("c:\\b.txt");
System.out.println("renameTo():" + oldFile.renameTo(newFile));

 

              D:判断功能

                     是否是文件:isFile()、是否是文件夹:isDirectory()

              E:获取功能

                     绝对路径:getAbsolutePath()、相对路径:getPath()、名称:getName()

                     大小:length()

              F:高级获取功能

                     获取指定目录下的所有文件或者文件夹的名称数组:list()

获取指定目录下的所有文件或者文件夹的File数组:listFiles()

G:文件名称过滤器(接口):FilenameFilter,多数情况下配合list(),listFiles()用。

blog_4_2字节流

(1)InputStream和OutputStream

InputStream: 是一个定义了Java流式字节输入模式的抽象类。

OutputStream: 是定义了流式字节输出模式的抽象类。

InputStream和OutputStream是字节流的顶层抽象类,亦可以说是字节流的基类。

(2)FileInputStream

FileInputStream是InputStream的一个子类,它创建一个能从文件读取字节的InputStream 类,它的两个常用的构造方法如下:

InputStream f0= new FileInputStream(String filePath) ;
File f = new File(String filePath);
InputStream f1= new FileInputStream(File fileObj);

 

(3)FileOutputStream

FileOutputStream创建了一个可以向文件写入字节的类OutputStream,它常用的构造方法如下:

FileOutputStream(String filePath)
FileOutputStream(Filefile Obj)
FileOutputStream(String filePath, boolean append)//如果括号中boolean append的值为True的话,则是向原文件中追加数据(不覆盖原有数据)的意思。

 

(4)BufferedInputStream(缓冲流)

BufferedInputStream会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。构造方法如下:

BufferedInputStream(InputStream in)

(5)BufferedOutputStream(缓冲流)

BufferedOutputStream实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。常用构造方法如下:

BufferedOutputStream(OutputStream out)

(5)字节输出流和字节输入流的综合运用

       复制一个文件四种方法:

A一次读取一个字节的方式

FileInputStream fis=new FileInputStream("abc.jpg");
      FileOutputStream fos=new FileOutputStream("copy.jpg");
      int ch=0;//注意此处为int类型
      while((ch=fis.read())!=-1){
         fos.write(ch);
      }
      fis.close();
      fos.close();
   }

 

B一次读取一个字节数组的方式:

      FileInputStream fis=new FileInputStream(file);
      FileOutputStream fos=new FileOutputStream("copy.gif");
      byte[]bys=new byte[1024];
      int len=0;
      while((len=fis.read(bys))!=-1){
         fos.write(bys,0, len);
      }

 

上述两种方法在效率上,第二种方式效率比第一种高。

C缓冲流 + 一次读取一个字节的方式:

      BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
      BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy.gif"));
      int ch=0;
      while((ch=bis.read())!=-1){
         bos.write(ch);
      }
      bis.close();
      bos.close();

 

D缓冲流 + 一次读取一个字节数组的方式:

      BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
      BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy.gif"));
      byte[]bys=new byte[1024];
      int len=0;
      while((len=bis.read(bys))!=-1){
         bos.write(bys,0, len);
      }
      bis.close();
      bos.close();

 

blog_4_3字符流

(1)    Reader和Writer

Reader是定义Java的流式字符输入模式的抽象类

Writer 是定义流式字符输出的抽象类。

Reader和Writer是字符流的顶层抽象类,也可以说是字符流的基类。

(2)    FileReader

FileReader类创建了一个可以读取文件内容的Reader类。它最常用的构造方法显示如下:

FileReader(String filePath)
FileReader(File fileObj)

 

(3)    FileWriter

FileWriter类创建了一个可以写文件的Writer 类,它最常用的构造方法如下:

FileWriter(String filePath)
FileWriter(String filePath, boolean append)
FileWriter(File fileObj)

 

(4)    BufferedReader(缓冲流)

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。常用构造方法如下:

BufferedReader(Reader in)

(5)    BufferedWriter(缓冲流)

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。常用的构造方法如下:

BufferedWriter(Writer out)

6字符输出流和字符输入流的综合运用

复制一个文本文件四种方法:

A.一次读取一个字符的方式:

FileReader fr=new FileReader("tool.txt");
      FileWriter fw=new FileWriter("toolcopy.txt");
      int ch=0;
      while((ch=fr.read())!=-1){
         fw.write(ch);
      }
      fr.close();
      fw.close();

 

B.一次读取一个字符数组的方式:

FileReader fr=new FileReader("tool.txt");
      FileWriter fw=new FileWriter("toolcopy.txt");
      char[]chs=new char[1024];
      int len=0;
      while((len=fr.read(chs))!=-1){
         fw.write(chs,0, len);
      }
      fr.close();
   fw.close();

 

C.缓冲流 + 一次读取一个字符的方式:

BufferedReader br=new BufferedReader(new FileReader("tool.txt"));
   BufferedWriter bw=new BufferedWriter(new FileWriter("copy2.txt"));
   int ch=0;
   while((ch=br.read())!=-1){
      bw.write(ch);
   }
   br.close();
   bw.close();
   }

 

D.缓冲流 + 一次读取一个字符数组的方式:

      BufferedReader br = new BufferedReader(new FileReader("tool.txt"));
      BufferedWriter bw = new BufferedWriter(newFileWriter("copy2.txt"));
      char[] chs =new char[1024];
      int len = 0;
      while ((len = br.read(chs))!= -1) {
         bw.write(chs,0, len);
      }
      br.close();
      bw.close();

 

E.对于字符流来说还有一种方式:

BufferedReader br = new BufferedReader(new FileReader("tool.txt"));
      BufferedWriter bw = new BufferedWriter(new FileWriter("copy2.txt"));
      String line = null;
      while ((line = br.readLine())!=null){
         bw.write(line);
         bw.newLine();
         bw.flush();
      }
      br.close();
   bw.close();

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值