当前位置: 首页 > 图灵资讯 > 技术篇> 打印流和Properties类

打印流和Properties类

来源:图灵教育
时间:2023-05-22 09:23:05

1.印刷流PrintStream和PrintWriter636

打印流只有输出流,没有输入流

打印流和Properties类_java

打印流和Properties类_mysql_02

1.1应用实例Printstream字节输出打印流636代码.stulzl.printstream_.包中Printstream_
package com.stulzl.printstream_;import java.io.IOException;import java.io.PrintStream;///应用实例Printstream字节输出打印流/输出流  636public class PrintStream_ {    public static void main(String[] args) throws IOException {        PrintStream out = System.out;        //在默认情况下,PrintStream 输出数据的位置是 标准输出,即显示器        out.print("john,hello");        //因为 print 底层使用的是 write , 因此,我们可以直接调用 write 打印/输出        out.write("你好,中国".getBytes());//getBytes()将字符串转换成byte[]数组的方法        //关闭流        out.close();        ///我们可以修改打印流输出的位置/设备        //1. 输出修改到 "e:\\f1.txt"        //2. "hello, 韩顺平教育~” 就会输出到 e:\f1.txt        System.setOut(new PrintStream("e:\\f1.txt"));///这句话修改了数据打印的位置        System.out.println("hello,你好");    }}
1.2应用案例PrintWriter字符输出打印流637代码.stulzl.printwriter_.PrintWriter_
package com.stulzl.printwriter_;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;///应用案例PrintWriter字符输出打印流  637public class PrintWriter_ {    public static void main(String[] args) throws IOException {        //PrintWriter printWriter = new PrintWriter(System.out);        ////将打印位置更改到e:\\f2.txt        PrintWriter printWriter = new PrintWriter(new FileWriter("e:\\f2.txt"));        ////默认打印到屏幕        printWriter.print("hi,北京");        printWriter.close();    }}
2.Properties类638

打印流和Properties类_mysql_03

2.1看需求638

下一个配置文件mysql.properties

ip=192.168.0.13

user:=root

pwd=12345

编程读取ip.user和pwd的值是多少?

使用Properties类别可以很容易地实现,以后补充

2.1.1传统的方法在src文件下建立一个mysql.properties文件
ip=1992.168.100user=rootpwd=12345
com中的代码.stulzl.properties_.包中Properties01
package com.stulzl.properties_;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;//以下配置文件mysql.properties  638//ip= 192.168.0.13//user: = root//pwd= 编程读ip12345/. user和pwd的publicc值是多少? class Properties01 {    public static void main(String[] args) throws IOException {        //传统方法        //虽然传统的方法也可以获得ip. user和pwd的值,但总是有点麻烦        //读取 mysql.properties 并获得文件 ip, user 和 pwd        BufferedReader br = new BufferedReader(new FileReader("src\\mysql.properties"));        String line = "";        //循环读取        while((line = br.readLine())!=null){            //System.out.println(line);            //split()方法可以根据传入的符号拆开字符串(本题将每个字符串分成两部分),把它放在一个数组里            String[] split = line.split("=");            System.out.println(split[0]+"值是:"+split[1]);            为什么传统的方法有麻烦,我们必须做出判断,有点麻烦            //我们要求只获得ip值///            if("ip".equals(split[0])(///))                System.out.println(split[1]);//            }        }        br.close();    }}
2.2Properties基本介绍639

1)专门用于读写配置文件的集合类

配置文件格式:

键=值

键=值

2)注意:键值不需要空格,值不需要用引号。默认类型是String。

3)Properties的常见方法

load:对Properties对象加载配置文件的键值

list:向指定设备显示数据

getProperty(key):按键获取值

setProperty(key,value):将键值设置为Properties对象

store:如果将Properties中的键值存储到配置文件中,并将信息保存到配置文件中

它含有中文,并将其存储为unicode码

http://tool.chinaz.com/tools/unicode.aspxunicode码查询工具

2.2.1案例应用1

1.使用Properties完成mysqlles.读取properties

com中的代码.stulzl.properties_.包中Properties02
package com.stulzl.properties_;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Properties;/1.使用Properties完成对mysqles.读取properties,639public class Properties02 {    public static void main(String[] args) throws IOException {        ///使用Properties完成mysqlles.读取properties,        //1. 创建Properties对象        Properties properties = new Properties();        //2. 加载指定的配置文件        properties.load(new FileReader("src\\mysql.properties"));        //3. 再控制台显示k-v        properties.list(System.out);//这是一种方法,不必纠结        //4. 根据key获得相应的值        String User = properties.getProperty("user");        String pwd = properties.getProperty("pwd");        System.out.println(用户名=”+User);        System.out.println(”密码是=”+pwd);    }}
2.2.2案例应用2640

2.使用Properties类添加key-val到新文件mysql2.properties

3.使用Properties完成mysql2.读取properties,修改key-val

com中的代码.stulzl.properties_.包中Properties03
package com.stulzl.properties_;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Properties;/2.使用Properties类添加key-val到新文件mysql2.properties  640/3.使用Properties完成对mysql2.读取properties,并修改某 个key-valpublic class Properties03 {    public static void main(String[] args) throws IOException {        Properties properties = new Properties();        ////创建k-v配置信息        properties.setProperty("charset",utf8);        properties.setProperty("user"汤姆");///注意保存,是中文的 unicode 码值        properties.setProperty("pwd",“abc111”;        //修改        如果文件没有,//1 key 就是创建        如果文件中有//2 key ,就是修改        properties.setProperty("pwd","888");                ///将k-v存储在文件中        ///这里的null代表文件注释一般没有特殊用途        properties.store(new FileOutputStream("src\mysql2.properties"),null);        System.out.println(成功保存配置文件…);    }}
3.练习1641

(1)判断e盘下是否有文件夹mytemp,如果没有,创建mytemp

(2)在e:\mytemp目录下,创建文件hello.txt

(3)如果hello.txt已经存在,提示文件已经存在,不要重复创建

(4)和hello.在txt文件中,写入hello,world~

com中的代码.stulzl.exercise01.包中Exercise01
package com.stulzl.exercise01;import java.io.*;//(1)判断e盘下是否有文件夹mytemp,如果没有,创建mytemp  641/(2):\mytemp目录下,创建文件hello.txt/(3)如果hello.txt已经存在,提示文件已经存在,不要重复创建//(4)和hello.在txt文件中,写入hello,world~public class Exercise01 {    public static void main(String[] args) throws IOException {        String directoryPath = "e:\\mytemp";        File file = new File(directoryPath);        if(!file.exists(){//如果e:\mytemp目录不存在            //创建目录            if(file.mkdirs(){//mkdirs创建多级目录                System.out.println("创建 "+directoryPath+"成功");            }else{                System.out.println("创建 "+directoryPath+"失败");            }        }        String filePath = directoryPath+"\\hello.txt";//拼接 e:\\mytemp\\hello.txt        file = new File(filePath);        if(!file.exists(){//如果hello.txt文件不存在            //创建文件            if(file.createNewFile(){///创建新文件                System.out.println(filePath+“创造成功”);                //如果文件存在,我们使用BufferedWriter 字符输入流写入内容hello,world~                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));                //输出数据                bufferedWriter.write("hello,world~");                //关闭流                bufferedWriter.close();            }else{                System.out.println(filePath+“创造失败”);            }        }else(/如果hello.存在txt文件            System.out.println(filePath+“已经存在,不重复创建”);        }    }}
4.练习2642

要求:用bufferedreader读取文本文件,为每行添加行号,然后与内容一起输出到屏幕上。如果文件的编码改为gbk,中文乱码出现,我们应该考虑如何解决

1.默认按utf-8处理,一开始没有乱码

2.提示:使用我们的转换流,将FileinputStream用于Fileinputstream->InputStreamReader[可指定编码]

com中的代码.stulzl.exercise02.包中Exercise02
package com.stulzl.exercise02;import java.io.*;//要求:用bufferedreader读取文本文件,为每行添加行号,  642//与内容一起输出到屏幕上。///如果将文件编码改为gbk,出现中文乱码,请考虑如何解决//1。默认情况下,按utf-8处理,开始时没有乱码//2。提示:使用我们的转换流,Fileinputstream -> InputStreamReader[可指定编码]public class Exercise02 {    public static void main(String[] args) throws IOException {        String filePath = "e:\\story.txt";        //如果将文件编码改为gbk,中文乱码出现,每个人都在思考如何解决        ///将Fileinputstream字节 -> Inputstreamreader字节输入转换        InputStreamReader inputStreamReader = new                InputStreamReader(new FileInputStream(filePath),"gbk");        ///将转换后的inputStreamreader放入bufferedreader中        BufferedReader br = new BufferedReader(inputStreamReader);        String data = "";        int count = 1;//行号        while((data = br.readLine())!=null){            System.out.println((count++)+" "+data);        }        br.close();    }}
5.练习3643

(1)写dog.properties

name=tom

age=5

color=red

(2)编写Dog类(name,age,color)创建dog对象,读取dog.properties用相应的内容完成

成属性初始化,输出

(3)将创建的Dog对象序列化为文件Dog.dat文件

com中的代码.stulzl.exercise03Exercise03
package com.stulzl.exercise03;import org.junit.jupiter.api.Test;import java.io.*;import java.util.Properties;//(1)编写dog.properties   643//name = tom//age= 5//color= red//(2)编写Dog类(name,age,color)创建dog对象, 读取dog.properties 用相应的内容完成///成属性初始化,输出//(3)创建的Dog对象,将序列化为文件dog.publicicdat文件 class Exercise03 {    public static void main(String[] args) throws IOException {        String filePath = "src\\dog.properties";        ///首先创建Properties对象        Properties properties = new Properties();        //加载信息        properties.load(new FileReader(filePath));        properties.list(System.out);        //(2)编写Dog类(name,age,color)创建dog对象, 读取dog.properties 用相应的内容完成        ///成属性初始化,输出        //这个问题的意思是取出相应的值,然后通过dog输出信息进入构建的dog类        ///取出相应的信息,取出的类型是Object,类型转换需要个别值        String name = properties.getProperty("name")+"";“/+”就是Object-String        //这里将Object类型转换为int,Integer.parseInt()方法,将字符串转换为int类型的方法        int age = Integer.parseInt(properties.getProperty("age"));        String color = properties.getProperty("color")+"";        ////创建Dog类对象        Dog dog = new Dog(name,age,color);        System.out.println(====dog对象信息=====);        System.out.println(dog);///输出信息        //(3)创建的Dog对象,将序列化为文件dog.dat文件        String serFilePath = "e:\\dog.dat";        //创建序列化对象        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(serFilePath));        ///将dog对象提醒序列化        oos.writeObject(dog);        //关闭流        oos.close();        System.out.println(====序列化完成====);    }    ///编写一种反序列化的方法    @Test    public void m1() throws IOException, ClassNotFoundException {        String serFilePath = "e:\\dog.dat";        ///创建反序列化对象        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(serFilePath));        //实际上也可以用Object接收dog,不需要类型转换        //dog 编译类型是 Object , dog 操作类型是 Dog        Dog dog = (Dog)ois.readObject();//类型转换,使用Dog类接收        System.out.println(=================);        System.out.println(dog);        ois.close();    }}class Dog implements Serializable{    private String name;    private int age;    private String color;    public Dog(String name, int age, String color) {        this.name = name;        this.age = age;        this.color = color;    }    @Override    public String toString() {        return "Dog{" +                "name='" + name + '\'' +                ", age=" + age +                ", color='" + color + '\'' +                '}';    }}