java I/O

一.文件/文件夹File
1.创建文件对象:
       new File("absolutePath/Path");
       new File(parentDir,fileName);
2.文件常用方法
     f.exists();
     f.isDirectory();
     f.isFile();
     f.length();
     f.lastModified();
     f.renameTo();
     f.list();
     File[] fs= f.listFiles();
     f.getParent();
     f.getParentFile();
     f.mkdir();
     f.mkdirs();
     f.createNewFile();
     f.listRoots();
     f.delete();
     f.deleteOnExist();
二.InputStream/OutputStream字节输入输出流
     FileInputStream/FileOutputStream
  示例代码
      try {
        // 准备文件lol2.txt其中的内容是空的
        File f = new File("d:/lol2.txt");
        // 准备长度是2的字节数组,用88,89初始化,其对应的字符分别是X,Y
        byte data[] = { 88, 89 };

        // 创建基于文件的输出流
        FileOutputStream fos = new FileOutputStream(f);
        // 把数据写入到输出流
        fos.write(data);
        // 关闭输出流
        fos.close();
           }
三.关闭流的方式
  1.在try中关闭
   如果文件不存在或者读取时出现问题将会转入catch语句导致关闭流的代码得不到执行
  2.在finally中关闭
     流的声明在try的外面(保证finally可以访问)+关闭之前判断是否为空+关闭时还需要再一次trycatch
 3.在try()括号中关闭
四.字符流Reader/Writer
    FileReader/FileWriter(这次用char数组来保存数据)
五.缓存流BufferedReader/PrintWriter,flush
  读取和写入都可以暂时保存到缓存中等缓存满了再输出,flush用于不用等缓存满了立马把数据写入硬盘    
  BufferedReader可以一次读取一行
    File f = new File("d:\dong");
    try( FileReader fr = new FileReader(f);
             BufferedReader bffR = new BufferedReader(fr)){
            while(true){
             String line = bffR.readLine();
                 if(null!=line)
                      sysout(line);
           }
         }   
六.数据流DataInputStream/DataOutputStream

要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,否则会出现EOFException,因为DataOutputStream 在写出的时候会做一些特殊标记,只有DataInputStream 才能成功的读取

      File f =new File("d:/lol.txt");
         try (
            FileInputStream fis  = new FileInputStream(f);
            DataInputStream dis =new DataInputStream(fis);
    ){
        boolean b= dis.readBoolean();
        int i = dis.readInt();
        String str = dis.readUTF();
         
        System.out.println("读取到布尔值:"+b);
        System.out.println("读取到整数:"+i);
        System.out.println("读取到字符串:"+str);

    }




File f =new File("d:/lol.txt");
    try (
            FileOutputStream fos  = new FileOutputStream(f);
            DataOutputStream dos =new DataOutputStream(fos);
    ){
        dos.writeBoolean(true);
        dos.writeInt(300);
        dos.writeUTF("123 this is gareen");
    }
七.对象流

对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘

一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口

八.System.in
  1. try (InputStream is = System.in;) {
        while (true) {
            // 敲入a,然后敲回车可以看到
            // 97 13 10
            // 97是a的ASCII码
            // 13 10分别对应回车换行
            int i = is.read();
            System.out.println(i);
        }
    } 

2.Scanner 可以读行/整数

        Scanner s = new Scanner(System.in);
         
        while(true){
            String line = s.nextLine();
            System.out.println(line);
           int a = s.nextInt();
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、流的概念和作用。 流是一种有顺序的,有起点和终点的字节集合,是对数据传输的总成或抽象。即数据在两设备之间的传输...
    布鲁斯不吐丝阅读 10,101评论 2 95
  • 概述 java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。java.io ...
    Steven1997阅读 9,236评论 1 25
  • Java I/O是Java中很重要的组成部分 一.以字节为向导的Stream InputStream/Output...
    黄大大吃不胖阅读 424评论 0 0
  • 主要就是对各种输入输出流使用的总结 字节流使用情况:对流中的数据以字节为单位进行读取写入操作,不关心内容 字符流使...
    任教主来也阅读 581评论 0 1
  • File File类,文件路径,既代表了一个特定文件的名称,有能代表一个目录下的一组文件的名称(list()方法,...
    MAXPUP阅读 369评论 0 1