IO流

IO流

一、File类

1.构造方法

public File(String pathname)
public File(String parent,String child)
public File(File parent,String child)

2.成员方法

创建功能
public boolean createNewFile() //创建文件
public boolean mkdir()//创建单层文件夹
public boolean mkdirs()//创建多层文件夹
删除功能
public boolean delete()
重命名功能
public boolean renameTo(File dest)
判断功能
public boolean isDirectory() //是否为文件夹
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden() //是否为隐藏文件

  • 基本获取功能

    public String getAbsolutePath() //获取相对路径
    public String getPath() //获取路径
    public String getName()//获取文件名
    public long length()//获取文件的字节大小
    public long lastModified() //返回路径文件上次的修改时间
    
  • 高级获取功能

    public String[] list()
    public File[] listFiles()
    

3.文件名称过滤器

文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
    //过滤文件名称
    public static void main(String[] args) {
    File file = new File("E:\\");
    String[] list1 = file.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            //这里返回的true还是false,根据条件来处理
            // dir -- E:\\
            // name -- 遍历到每一个文件或者文件夹的名字
            //构建当前文件或者文件夹的File对象
            File file1 = new File(dir, name);
            return file1.isFile() && file1.getName().endsWith(".java");
        }
    });

    String[] list1 = file.list((dir, name) -> {
        File file1 = new File(dir, name);
        return file1.isFile() && file1.getName().endsWith(".java");
    });

    System.out.println(Arrays.toString(list1));
}        

4.字节流写数据OutputStream

  • FileOutputStream构造方法
FileOutputStream(File file)
FileOutputStream(String name)
  • 成员方法
public void write(int b)
public void write(byte[] b) //写入一个字节数组
public void write(byte[] b,int off,int len)//写入字节数组,开始位置,写入长度

5.字节流读取数据InputStream

  • FileInputStream构造方法
FileInputStream(File file)
FileInputStream(String name)
  • 成员方法
public int read()
public int read(byte[] b)

6.字节缓冲流

  • 字节缓冲输出流 BufferedOutPutStream
public class OutputStreamWriterDemo1 {
    public static void main(String[] args) throws Exception{
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("src/com/shujia/day15/b2.txt"),"UTF-16BE");
        public void write(int c) 一次写一个字符
        osw.write(97);
        osw.flush();
        public void write(char[] cbuf) 一次写一个字符数组
        char[] chars = {'我','爱','中','华'};
        osw.write(chars);
        public void write(char[] cbuf,int off,int len)一次写一个字符数组一部分
        osw.write(chars,2,2);
        osw.flush();//将内存的内容刷写到硬盘                                                                         
        osw.close();
    }
}

  • 字节缓冲输入流 BufferedInputStream
public class InputStreamReaderDemo1 {
    public static void main(String[] args) throws Exception {
        //创建字节输入流对象,要想更快的话,使用字节缓冲输入流
        BufferedInputStream bis = new BufferedInputStream(neFileInputStream("src/com/shujia/day15/b1.txt"));
        //一次读取一个字节
//        int i = 0;
//        while ((i=bis.read())!=-1){
//            System.out.println(i);
//        }
        //一次读取一个字节数组
        byte[] bytes = new byte[3];
        int length = 0;
        while ((length=bis.read(bytes))!=-1){
            String s = new String(bytes, 0, length);
            System.out.println(s);
        }
        //释放资源
        bis.close();
    }
}

7.字符流(转换流)

  • 由于字节流操作中文不是特别方便

  • 字符流=字节流+编码表

  • 编码表

    • 由字符及其对应数值组成的一张表

    • public class BianMaDemo {
          public static void main(String[] args) throws Exception{
              String s = "今天晚上8点行动";
              //加密 String-->字节数组
              byte[] bytes = s.getBytes("Unicode");
              System.out.println(Arrays.toString(bytes)+"--"+bytes.length);
              //解密 字节数组-->字符串
              String s1 = new String(bytes,"Unicode");
              System.out.println(s1);
      
          }
      }
      
//OutputStreamWriter 字符输出流
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out,String charsetName)
//InputStreamReader 字符输入流
public InputStreamReader(InputStream in)
public InputStreamReader(InputStreamin,StringcharsetName)

//OutputStreamWriter写数据方法
public void write(int c)
public void write(char[] cbuf)
public void write(char[] cbuf,int off,int len)
public void write(String str)
public void write(String str,int off,int len)
    
//OutputStreamWriter读数据方法
public int read()
public int read(char[] cbuf)


  • 转化流的简化写法
//转换流的名字比较长,而我们常见的操作都是按照本地默认的编码实现的,
//提供了对应的子类
FileWriter
FileReader

    
    
    public class FileReaderDemo1 {
    public static void main(String[] args) throws Exception {
//        OutputStreamWriter osw = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream("src/com/shujia/day15/b2.txt")));
        FileWriter fw = new FileWriter("src/com/shujia/day15/b2.txt");
        //等同于 OutputStreamWriter osw = new OutputStreamWriter(new 						FileOutputStream("src/com/shujia/day15/b2.txt"))
        fw.write("你好世界");
        fw.flush();


//      InputStreamReader isr = new InputStreamReader(new FileInputStream("src/com/shujia/day15/b2.txt"));
        FileReader fr = new FileReader("src/com/shujia/day15/b2.txt");
        
        char[] chars = new char[1024];
        int length = 0;
        while ((length=fr.read(chars))!=-1){
            String s = new String(chars, 0, length);
            System.out.println(s);
        }

        fw.close();

    }
}

8.字符缓冲流

BufferedWriter基本用法
BufferedReader基本用法
//字符缓冲流的特殊功能    
//BufferedWriter
void newLine()
//BufferedReader
String readLine()


9.对象流(序列化流)

//序列化流
ObjectOutputStream
//反序列化流
ObjectInputStream
posted @ 2024-03-11 19:14  low-reed  阅读(6)  评论(0)    收藏  举报