Java的IO操作

1)文件 以及文件夹操作 :

 ---------------------------文件:   -----------------------------
 
 //1.1创建文件  

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

  //1.2判断文件是否存在  

         if(!file.exists()){
           	file.createNewFile();
         }

  //1.3删除  

         file.delete();

        file.deleteOnExit();//退出jvm时,删除文件

  //1.4可执行、可读、可写  

         file.canExecute();

        file.canRead();

         file.canWrite();

  //1.5获取  

        file.getAbsoulatePath();

         file.getPath();

         file.getName();

         file.getParent();

         file.lastModified();//修改时间

  //1.6判断  

         file.isFile();

         file.isHidden();


         file.renameTo();//重命名


  ------------------------文件夹 :  ------------------------------

  //2.1创建文件夹  

      	File dir=new File("d:\\aaa\\bbb");

  //2.2判断是否存在  

      	if(!dir.exists()){

            dir.mkdir();//一级目录

            dir.mkdirs();//多级目录,创建目录链,如果父目录不存在则一同创建;

      	}

  //2.3删除  

      	dir.delete();

      	dir.deleteOnExit();

  //2.4获取  

      	 dir.getAbsoulatePath();

         dir.getPath();

         dir.getName();

         dir.getParent();

  //2.5判断  

         dir.isDirectory();

         dir.isHidden();

         dir.renameTo();

  //2.6列出来当前目录下的文件和子文件夹  

         dir.list();	//String[ ]  —— 下级名称

         dir.listFiles();	//File[]  —— 下级所有文件和目录
 

4)read()方法:

(1)read方法,从输入流里面读取一个字节,该方法在你没有输入之后将会阻塞;
(2)返回值是下一个字节数据,或者是返回-1  ,是-1的情况是该文件到了结尾没有内容了;

 

5) \r 与 \n 与 \r\n ,换行与回车;

'\r'是回车, 使光标到行首,
​
'\n'是换行, 使光标下移一格,
​
Windows系统里面,每行结尾是“<回车><换行>”,  即“\r\n”  ;

6)mkdir()与mkdirs()的区别:

mkdir():创建一个目录,但必须保证上级目录存在,不存在则创建失败。
​
mkdirs():创建一个目录,如果上级目录不存在,则一同来创建。在实际开发中经常使用mkdirs()。
​
​
PS:我们创建文件,使用的是creatNewFile();我们创建文件夹(目录),使用的是mkdirs()。

7)OutputStream和InputStream不能直接实例化,

    OutputStream和InputStream都是抽象类,不能直接实例化,只能实例化他们的子类;
    
比如:   FileOutputStream 和 FileInputStream 。

10)newLine( )、read()和readline() 方法

  @1: newLine();  //换行符  
 @2:java中read()和readline()方法的对比:  
​
        read方法:读取单个字符。    如果已到达流末尾,则返回 -1;
​
        readLine方法:读取一个文本行。   

14)标准输入输出流(System.in、System.out)

​
    Java的标准输入/输出分别通过System.in和System.out实现,默认情况下分别代表是键盘和显示器;
​
PrintStream类:PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
​
PrintWriter类:向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream中的所有 print方法。它不包含用于写入原始字节的方法。
​
PrintStream主要操作byte流,
而PrintWriter用来操作字符流。读取文本文件时一般用后者,一般需要处理中文时用PrintWriter好了
​
 

16)对象流

流中流动的数据是对象流;
​
    ObjectInputStream: 对象输出流
​
    ObjectOutputStream:对象输入流

2)IO分类:

  1. 按照流向 : 输入流和输出流;

  2. 按照格式 : 字节流和字符流;

3)字节流、字符流

字节流 :

  • InputStream ----> FileInputStream

  • OutputStream ----> FileOutputStream

字符流:

  • Reader ----->InputStreamReader----> FileReader

  • Writer ----->OutputStreamWriter----> FileWriter

8) 传输文本文件时用Buffered缓冲流,不传输文本文件的话,不必用Buffered缓冲流:

  传输文本文件时,用Buffered缓冲流,可以传输中文,而且更有效率;  
​
  如果不传输文本文件的话,比如传输一个图片,则不必用Buffered缓冲流,用字节流即可;  

9)缓冲流、字节流、字符流的识别方法:

BufferedInputStream、BufferedOutputStream,缓冲流。
​
只要看到XXX.._Stream,说明就是字节流;
​
同理,只要看到XXX.._Reader,说明就是字符输入流,看到XXX.._Writer,说明就是字符输出流。
​
字节流是什么什么Stream,字符流是什么什么Reader或什么什么Writer。

11)装饰者模式

    装饰模式指的是:在不必改变原类文件和继承的情况下,  动态地扩展一个对象的功能  。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
​
    应用场景:  需要扩展一个类的功能,或给一个类添加附加职责。  

12)转换流(InputStreamReader、OutputStreamWriter):

InputStreamReader:字节字符转换输入流,将字节输入流转换为字符输入流;
​
OutputStreamWriter:字符转换输出流,将内存中的字符转成字节保存到硬盘中。

13)内存流—ByteArrayInputStream、 ByteArrayOutputStream :

ByteArrayInputStream:将内容写入到内存中,是Inputstream的子类;
​
ByteArrayOutputStream:将内存中的数据输出,是OutputStream的子类;

15)对象中哪些字段可以不序列化:

1 transient 修饰的字段
​
2 静态的字段
​
transient关键字解释:
    1、transient关键字只能修饰变量,而不能修饰方法和类。
    2、被transient关键字修饰的变量不再能被序列化

18)IO流的核心类

IO流的5个核心类:
               - File   文件类
               - InputStream   字节输入流
               - OutputStream  字节输出流
               - Reader  字符输入流
               - Writer  字符输出流

19)所有IO流汇总:

 

20)IO流的总分结构:

 

···

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值