【211天】黑马程序员27天视频学习笔记【Day22-下】

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【211天】黑马程序员27天视频学习笔记【Day22-下】脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

叨逼叨两句

  1. 不想再耽误时间了,月中前搞定
  2. 科技究竟是什么?是不是能够提高生产效率的所有工具都能算是科技?还是说是利用科学方法获得的技

22-09:打印流概述和特点

打印流概述

  1. 作用:将对象的toString()结果输出,并且自动加上换行,而且可以使用自动刷出的模式。
  2. System.out其实是PRintStream类的一个成员变量,默认向控制台输出信息。
package com.test.demo001;  import java.io.IOException; import java.io.PrintStream;  public class Demo010 {     public static void main(String[] args) throws IOException{         System.out.println("aaa");         PrintStream ps = System.out;                  ps.println(97);   //底层通过Integer.toString()将97转换成字符串并打印         ps.wrITe(97);        //查找码表,找到a并打印                  Student s1 = new Student("张三",23);         ps.println(s1);          Student s2 = null; //若引用是null则打印null,若引用指向对象,则调用对象的toString方法         ps.println(s2);                  ps.close();     }     } 

使用方式

  1. 打印:print()、println()
  2. 自动刷出:PrintWriter(OutputStream out,boolean autoFlush,String encoding)【自动刷出功能只在遇到println方法时有用,print和write都不行,开发一般不用
  3. PrintStream和PrintWriter分别打印字节流和字符流,只操作数据目的【数据目的相当于拷贝的文件;数据相当于被拷贝的文件】
  4. Writer、Reader、InputStream都内置一个缓冲区,而OutputStream没有【为什么这样设计?】
package com.test.demo001;  import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter;  public class Demo010 {     public static void main(String[] args) throws IOException{         //不用自动刷出功能         PrintWriter pw = new PrintWriter("f.txt");         pw.println(97);         pw.write(97);         //pw.close();                  //使用自动刷出功能         PrintWriter pw1 = new PrintWriter(new FileOutputStream("g.txt"),true);         pw1.println(97);         pw1.write(97);         //pw1.close();              }     }  

22-10:标准输入输出流概述和输出语句

概述

  1. System.in是InputStream,标准输入流,默认可以从键盘输入读取字节数据。
  2. System.out是PrintStream,标准输出流,默认可以向Console中输出字符和字节数据。
package com.test.demo001;  import java.io.IOException; import java.io.InputStream;  public class Demo010 {     public static void main(String[] args) throws IOException{         InputStream is = System.in;         int x = is.read();  //读取的只是第一个字节         System.out.println(x);  //打印的是第一个字符的码表值         is.close();     }     }

修改输入输出流

  1. 修改输入流:setIn(InputStream)
  2. 修改输出流:setOut(PrintStream)
package com.test.demo001;  import java.io.FileinputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream;  public class Demo010 {     public static void main(String[] args) throws IOException{              //该方法开发不推荐使用              System.setIn(new FileInputStream("a.txt"));         System.setOut(new PrintStream("b.txt"));         InputStream is = System.in;         PrintStream ps = System.out;         int b;         while((b = is.read())!= -1){             ps.write(b);         }         is.close();         ps.close();     }     }  

注意事项

  1. 若不关联文件,标准输入输出流是不用关闭的【只是在内存中读写,没有和硬盘上的文件产生关联的管道】
  2. 标准输入输出流只有一条,不用重复关闭。

22-11:两种方式实现键盘录入

BufferedReader

package com.test.demo001;  import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;  public class Demo010 {     public static void main(String[] args) throws IOException{         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));         String line = br.readLine();         System.out.println(line);         br.close(); //可要可不要     }     } 

Scanner【开发推荐】

package com.test.demo001;  import java.io.IOException; import java.util.Scanner;  public class Demo010 {     public static void main(String[] args) throws IOException{         Scanner sc = new Scanner(System.in);         String line = sc.nextLine();         System.out.println(line);         sc.close();     //可要可不要     }     } 

22-12:练习:修改输入输出流拷贝图片【开发不推荐】

package com.test.demo001;  import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream;  public class Demo010 {     public static void main(String[] args) throws IOException{         System.setIn(new FileInputStream("dd.jPEg"));         System.setOut(new PrintStream("copy.jpeg"));         InputStream is = System.in;         PrintStream ps = System.out;         byte[] arr = new byte[1024];         int len;         while((len = is.read(arr))!= -1){             ps.write(arr,0,len);         }         is.close();         ps.close();     }     } 

22-13:随机访问流概述和读写数据【新版本有些不一样,这里看视频

  1. RandomAccessFile类不属于流,继承于Object,是Object类的子类。但它融合了InputStream和OutputStream的功能。
  2. 支持对随机访问文件的读取和写入。
  3. read(),write(),seek()【seek可以应用于多线程下载】
  4. 元数据
  5. RandomAccessFile(InputStream)
package com.test.demo001;  import java.io.IOException; import java.io.RandomAccessFile;  public class Demo010 {     public static void main(String[] args) throws IOException{         RandomAccessFile raf = new RandomAccessFile("kkk.txt","rw");         //raf.write(97);         //int x = raf.read();         //System.out.println(x);         raf.seek(10);           raf.write(98);         raf.close();     }     } 

22-14:数据输入输出流

  1. 不使用数据输入输出流,直接这样将int类型数据写入的结果如下:
package com.test.demo001;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo010 {     public static void main(String[] args) throws IOException{         //demo01();         FileInputStream fis = new FileInputStream("h.txt");         int a;         while((a = fis.read())!= -1){             System.out.println(a);         }         fis.close();     }      private static void demo01() throws FileNotFoundException, IOException {         FileOutputStream fos = new FileOutputStream("h.txt");         fos.write(997);         fos.write(998);         fos.write(999);         fos.close();     }     }
  1. 使用数据输入输出流后的结果:
package com.test.demo001;  import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo010 {     public static void main(String[] args) throws IOException{         DataOutputStream DOS = new DataOutputStream(new FileOutputStream("h.txt"));         dos.writeInt(997);         dos.writeInt(998);         dos.writeInt(999);         dos.close();              }  } 
package com.test.demo001;  import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Demo010 {     public static void main(String[] args) throws IOException{         DataInputStream dis = new DataInputStream(new FileInputStream("h.txt"));         int x;         while((x = dis.readInt())!= -1){             System.out.println(x);         }         dis.close();     }  } 

22-(15-17):Properties类

概述

  1. Properties用来写配置文件,建议写配置文件后缀名都为.properties
  2. Properties是HashTable的子类
  3. Properties里面被限制为只用String类型
  4. Properties类表示了一个持久的属性集
  5. Properties可保存在流中或从流中加载
  6. 属性列表中每一个键及其对应值都是一个字符串
  7. Properties作为map集合使用的例子如下:
package com.test.demo001;  import java.io.IOException; import java.util.Properties;  public class Demo010 {     public static void main(String[] args) throws IOException{         Properties prop = new Properties();         prop.put("abc", 123);         System.out.println(prop);     }     } 

特殊功能

  1. public Object setProperty(String key,String value)
  2. public String getProperty(String key)
  3. public Enumeration<String> stringPropertynames()
package com.test.demo001;  import java.io.IOException; import java.util.Enumeration; import java.util.Properties;  public class Demo010 {     public static void main(String[] args) throws IOException{         Properties prop = new Properties();         prop.put("z3",23);         prop.put("z4",24);         System.out.println(prop);                  Enumeration<String> en = (Enumeration<String>) prop.propertyNames();         while(en.hasMoreElements()){             String key = en.nextElement();             String value = prop.getProperty(key);             System.out.println(key + "=" + value);         }                       }     }

load()和Store()

load

package com.test.demo001;  import java.io.FileInputStream; import java.io.IOException; import java.util.Properties;  public class Demo010 {     public static void main(String[] args) throws IOException{         Properties prop = new Properties();         prop.load(new FileInputStream("config.properties"));         System.out.println(prop);     }     } 

store

package com.test.demo001;  import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties;  public class Demo010 {     public static void main(String[] args) throws IOException{         Properties prop = new Properties();         prop.load(new FileInputStream("config.properties"));         prop.setProperty("tel", "1111");         prop.store(new FileOutputStream("config.properties"),"XXXX"); //后面这个参数是用来写注释的         System.out.println(prop);     }     } 

脚本宝典总结

以上是脚本宝典为你收集整理的【211天】黑马程序员27天视频学习笔记【Day22-下】全部内容,希望文章能够帮你解决【211天】黑马程序员27天视频学习笔记【Day22-下】所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。