Java笔记10-IO流


 * IO流分类:
 *  字节流
 *      字节输出流:OutputStream
 *      字节输入流:InputStream
 * 
 *  字符流
 *      字符输出流:Writer
 *      字符输入流:Reader
 * 
 * 流向:
 *      输入流
 *      输出流
FileOutputStream(字节输出流)
 
FileOutputStream是OutputStream子类。
OutputStream是抽象类无法创建对象所以使用子类。
字节数出流使用步骤:
    1.创建字节输出流对象
    2.写数据
    3.关流
构造方法:
 *  FileOutputStream(String name):参数name:写入的文件路径
 
 写数据的方法:
 *  void write(int b):写一个字节
 *  void write(byte[] b):写一个字节数组
 *  void write(byte[] b, int off, int len):写字节数组的一部分 
 *
 *  注意:如果文件路径不以盘符开始,默认在当前项目下。
 
 * 如何换行?
 *  Windows: \r\n
 *  Linux:\n
 *  Mac:\r
 *  
 * 
 * 如何实现数据的追加写入?
 *  public FileOutputStream(String name,boolean append):第二参数为true表示追加
FileInputStream(字节输入流)(掌握)
 
 * FileInputStream(字节输入流):
 *  FileInputStream(String name)
 *  
 * 读取的方法:
 *  int read():每次读取一个字节
 *  int read(byte[] b):每次读取一个字节数组
 读取的方式:一次读取一个字节
        FileInputStream fis = new FileInputStream("a.txt");
        int by;
        while( (by = fis.read()) != -1){
            System.out.print((char)by);
        }
 注意:英文字母每一个占用1字节空间,中文占用空间2字节,那么每次读取一个字节,如果文件中有中文会乱码。
 
 读取方式:一次读取一个数组:
        byte[] bys = new byte[1024];
        int len;//读取到的长度
        while( (len = fis.read(bys)) != -1 ){
            System.out.print( new String(bys, 0, len) );
        }
高效流
 
高效的字节输入流
 * BufferedInputStream(InputStream in)
 * 
 *高效的字节输出流
 *  BufferedOutputStream(OutputStream in)
 
File
    File:文件和目录路径名的抽象表示形式。
     * File类的构造方法:
     *   File(String pathname):根据一个路径得到File对象
     *   File(String parent, String child):根据父级目录+子级目录得到file对象
     *   File(File parent, String child):根据file对象+子级目录
    ?
    创建功能:
     *  boolean createNewFile():创建文件
     *  boolean mkdir():创建的是单级文件夹
     *  boolean mkdirs():创建多级文件夹
     *  注意:以上三个方法创建成功返回true,如果存在返回false。
     
     删除功能:
        boolean delete():可以删除文件和文件夹
     * 注意:
     *  1.删除某一个目录,该目录下如果有内容,那么无法删除
     *  2.java删除不走回收站
     
     重命名功能:
     boolean renameTo(File dest):重命名
     * 注意:
     *  如果路径不变,改名。
     *  如果路径不同,剪切并改名。
     
     判断功能:
     *  boolean exists():是否存在
     *  boolean isAbsolute():是否是绝对路径
     *  boolean isDirectory():是否是目录
     *  boolean isFile():是否是文件
     
     简单获取功能:
     *  String getAbsolutePath():获取绝对路径
     *  String getName():获取文件或者目录的名称
     *  long length():获取这个文件中的长度
     
     高级获取功能:
        String[] list():获取目录下所有的文件及文件夹的名称存放在String数组中
        File[] listFiles():获取目录下所有的文件及文件夹的对象存储在File数组中
    
字符输出流FileWriter
    Writer是字符输出流的父类,但是是抽象类无法创建对象,所以学下了下面的子类FileWrite。
    FileWriter类的构造方法:
     *  FileWriter(String fileName)
     * 
     * 写入的方法:
     *  void write(int c):写入单个字符。 
     *      'a' 97 == 'a'
     *  void write(char[] cbuf):写入字符数组。 
     *  void write(char[] cbuf, int off, int len): 写入字符数组的某一部分。 
     *  void write(String str):写入字符串。 
     *  void write(String str, int off, int len):写入字符串的某一部分。
字符输入流FileReader
 
    FileReader中的构造方法:
     *  FileReader(String fileName)
     * 
     读取方法:
     *  int read():读取单个字符。 
     *  int read(char[] cbuf):将字符读入数组 
     
     一次读写一个字符:代码
            int ch;
            while(   (ch = fr.read()) != -1 ){
                fw.write(ch);
            }
    一次读写一个字符数组:代码
            char[] chs = new char[1024];
            int len;
            while(  (len = fr.read(chs)) != -1    ){
                fw.write(chs, 0 , len);
            }
Buffered(Writer和Reader)
     
     * BufferedWriter的构造方法:
     *  BufferedWriter(Writer out)
       
       BufferedWriter中的方法
     *  void newLine():写入一个换行符
     * 
     * BufferedReader的构造方法:
     *  BufferedReader(Reader in)
         
       BufferedReader中的方法
     *  String readLine():每次读取一行
 
转换流
 * OutputStreamWriter:
 *  OutputStreamWriter(OutputStream out):默认编码
 *  OutputStreamWriter(OutputStream out, String charsetName):指定编码
 * 
 * InputStreamReader:
 *  InputStreamReader(inputStream in):默认编码
 *  InputStreamReader(inputStream in,String charsetName):指定编码

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值