IO

File

File概述
     一个储存路径的类, 储存文件或文件夹路径。 
     文件或文件夹的抽象表示
               
相对路径与绝对路径
     相对路径:
          相对于某个位置,举例 获取路径A,在这个路径A之上在进行使用的就是相对路径
     绝对路径:     
          带盘符的路径,绝对路径也称全路径

构造方法
     File(String pathname) 根据一个路径获取File对象
     File(String parent,String child) 根据一个目录和一个子文件或目录获取File对象
     File(File parent,String child ) 根据一个File对象和一个子文件或目录获取File对象
     File(URI rui) 通过URI获取一个File对象

创建功能
     boolean createNewFile(); 创建一个文件 如果创建成功返回一个true 创建失败或已存在返回false
     boolean mkdir(); 创建一个文件夹 如果创建成功返回一个true 创建失败或已存在返回false
     boolean mkdirs(); 创建一个文件夹 如果父目录存在也会创建出来 如果创建成功返回一个true 创建失败或已存在返回
                        false
      注意:如果创建文件或文件夹时忘记写盘符,那么会默认创建在项目路径下 没有盘符就是相对路径

重命名和删除功能
     boolean renameTo(File file) 传入一个重命名的路径 其实底层就是把文件剪切,改名字在粘贴
     boolean delete() 删除文件或文件夹 注意的是如果文件夹下有子文件或子目录,要把子目录子文件清空才能删除
                                   java中的删除不走 回首站

判断功能
      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()      获取指定目录下的所有文件或者文件夹的File数组

文件过滤器
      public String[] list(FilenameFilter filter)     
      public File[] listFiles(FileFilter filter) 


IO流

IO流概念
     IO用来处理数据之间的传输,java对数据的操作就是通过流来实现的
     java的流操作都在io包中,按方向分有输入流、输出流。按操作分有字节流、字符流

IO流父类
     字节流父类
          InputStream
          OutputStream
     字符流
          Reader 
          Writer

IO流使用步骤
     导入流类—>创建流对象—>写入写出—>关闭流释放流资源

字节流

字节流概述
     用来进行文件的传输,数据的传输

字节流常用类
     文件流
     FileInputStream
     FileOutputStream
     文件读写,可自定义缓冲区,缓冲区为byte
     缓冲流
     BufferedInputStream
     BufferedOuputStream
     文件读写,类内部有缓冲区 有flush方法
     
输入字节流常用方法
     int read() 读取一个字节返回一个int
          为什么返回int ? 如果返回的是byte,返回11111111(-1)的时候程序就会停止,如果返回的是int自动补24个零变成
                 255
    int reed(byte[] arr)   传入一个byte数组返回一个读取子节的个数

输出字节流常用方法
     writer() 写一个字节
      writer(byte[] arr,int start ,int end) 传入一个字节数字从那开始到那结束

缓冲流
     缓冲流和普通的流的区别
          flush() 刷新缓冲区

IO流核心用法
     int i = 0;
     while((i=in.read()) != -1)
          out.writer(i);

字符流

字符流概述
     字符流可以直接进行字符的读写
     原理:先读取到字节,在转换成字符。 先将字符转成字节,在写出。

字符流弊端
     无法拷贝非纯文本文件

字符流常用类
     字符流
     FileReader
     FileWriter
      可进行文本的读写,可以自定义缓冲区,缓冲区类型为char
     缓冲字符流
     BufferedReader
     BufferedWriter
     需要传入字符流才可使用,内部有缓冲区,缓冲区大小16k,有flush方法 readLine方法 NewLine方法
          readLine 一次性读取一行 返回一个字符串 读区到文本末尾返回null
          newLine 换行等价于”\r\n"
     字符流
     InputStreamReader
     OutputStreamWriter
     需要传入字节流和编码表格式 才可使用,一般用来读取其他编码表格式的文本
     行号字符流
               LineNumberReader
               LineNumberWriter
               需要传入一个字符流才可使用,写出时可添加行号,有setLineNumber方法 getLineNumber方法
                    setLineNumberReader 传入一个int值 设置开始行号
                    gerLineNumberWriter   获取行号
     

字节流和字符流的应用场景
     字节流
          在进行数据的传输,文件的拷贝移动,使用字节流
     字符流
          进行文本读写,文本传输的时候使用,就算是纯文本文件也不建议使用字符流拷贝


递归

递归的概述
     递归就是方法自己调用自己

递归的好处
     在不知道方法的调用次数的的时候可以使用递归

递归的弊端
     不能调用的次数过多,否则会栈内存溢出

递归的注意事项
     递归可以有返回值,也可以无返回值


IO流中特殊作用的流

序列流 SequenceInputStream
     序列流的概述
           把多个输入字节流整合成一个,在读取序列流的时候,读取第一个存入的,读取完读取第二个存入的,以此类推
    
     构造方法
           SequenceInputStream(InputStream in,InputStream in2) 传入两个字节流合并成一个
           SequenceInputStream(Enumeration en) 传入枚举
                   Vector<InputStream> v = new Vector<>();
                   Enumeration<InputStream> en = v.elements();

内存输出流 ByteArrayoutputStream
      内存输出流概述
          该流可以向内存写入数据,把内存当作一个缓冲区,写出之后可以一次性获取所有数据

     构造方法
          ByteArrayoutputStream() 不许要传任何参数

     写出数据
          write(int i) 写出一个字节
          write(byre[] arr) 写入一个字节数组

     获取数据
          toByteArray() 获取一个字节数组
          toString() 获取一个字符串


随机访问流 RandomAccessFile
     随机访问流概述
          随机访问流不属于流,是Object的子类,但是他融合了InputStream 和 OutputStream 
          作用:可以从字节的任意索引开始读写

     构造方法
          RandomAccessFile(File file,String mod) 传入一个文件路径(不存在会自动创建),传入模式
               对一个文件进行读写操作
     
     写入数据
          write(); 

     读取数据
          read();

     指定索引位置
          seek(int i)


对象操作流 ObjectOutputStream & ObjectInputStream
     对象操作流概述
          对象操作流可以写出对象,读取一个对象,但在读写过程中需要进行序列化与反序列化操作
          序列化:写出对象
          反序列化:读取对象

     构造方法
          ObjectOutputStream(File file) 传入一个文件路径 将对象序列化后写到目标文件
          ObjectInputStream(File file)     传入一个文件路径从该文件或对象,在获取之前需要进行反序列化

     写入方法
          readObject(Object obj)

     读取方法
          Object writeObject();

     注意事项
          被写入的对象需要实现 Serializable接口


打印流 PrintStream & PrintWriter
     打印流概述
          该流可以很方便的将对象的toString()结果输出, 并且自动加上换行, 而且可以使用自动刷出的模式

          PrintStream 使用方式
          System.out就是一个PrintStream, 其默认向控制台输出信息

PrintStream ps = System.out;
ps.println(97); //其实底层用的是Integer.toString(x),将x转换为数字字符串打印
ps.println("xxx");
ps.println(new Person("张三", 23));
Person p = null;
ps.println(p); //如果是null,就返回null,如果不是null,就调用对象的toString()

PrintWriter 使用方式
打印: print(), println()
自动刷出: PrintWriter(OutputStream out, boolean autoFlush, String encoding)

打印流只操作数据目的
PrintWriter pw = new PrintWriter(new FileOutputStream("g.txt"), true);
pw.write(97);
pw.print("大家好");
pw.println("你好"); //自动刷出,只针对的是println方法
pw.close();


标准输入输出流
     标准输入输出流概述
          System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
          System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据

     修改标准输入输出流
          修改输入流: System.setIn(InputStream)
          修改输出流: System.setOut(PrintStream)


Properties
      Properties概述
          Properties 类表示了一个持久的属性集。
          Properties 可保存在流中或从流中加载。
          属性列表中每个键及其对应值都是一个字符串。
          简单来说就是一个配置文件读写类

     Properties的特殊功能
          public Object setProperty(String key,String value) 存入数据键对应值
          public String getProperty(String key)     传入键获取值
          public Enumeration<String> stringPropertyNames()  获取枚举

     读写方法
          lord(InputStream in) 传入一个输入流 获取文件中的键值对写入到集合
          store(OutputStream out) 传入一个输出流 将集合中的键值对写入文件
  







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值