脚本宝典收集整理的这篇文章主要介绍了【211天】黑马程序员27天视频学习笔记【Day22-下】,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
叨逼叨两句
22-09:打印流概述和特点
打印流概述
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(); } }
使用方式
- 打印:print()、println()
- 自动刷出:PrintWriter(OutputStream out,boolean autoFlush,String encoding)【自动刷出功能只在遇到println方法时有用,print和write都不行,开发一般不用】
- PrintStream和PrintWriter分别打印字节流和字符流,只操作数据目的【数据目的相当于拷贝的文件;数据源相当于被拷贝的文件】
- 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:标准输入输出流概述和输出语句
概述
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(); } }
修改输入输出流
- 修改输入流:setIn(InputStream)
- 修改输出流: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(); } }
注意事项
- 若不关联文件,标准输入输出流是不用关闭的【只是在内存中读写,没有和硬盘上的文件产生关联的管道】
- 标准输入输出流只有一条,不用重复关闭。
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:随机访问流概述和读写数据【新版本有些不一样,这里看视频】
- RandomAccessFile类不属于流,继承于Object,是Object类的子类。但它融合了InputStream和OutputStream的功能。
- 支持对随机访问文件的读取和写入。
- read(),write(),seek()【seek可以应用于多线程下载】
- 元数据
- 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:数据输入输出流
- 不使用数据输入输出流,直接这样将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(); } }
- 使用数据输入输出流后的结果:
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类
概述
- Properties用来写配置文件,建议写配置文件后缀名都为.properties
- Properties是HashTable的子类
- Properties里面被限制为只用String类型
- Properties类表示了一个持久的属性集
- Properties可保存在流中或从流中加载
- 属性列表中每一个键及其对应值都是一个字符串
- 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); } }
特殊功能
- public Object setProperty(String key,String value)
- public String getProperty(String key)
- 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,请注明来意。