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

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【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,请注明来意。