脚本宝典收集整理的这篇文章主要介绍了【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,请注明来意。