Java学习第四十九天<处理流><对象处理流><标准输入输出流><转换流><打印流><配置文件Properties><IO流章节作业>

处理流

package chapter21.BufferedStream;
​
import java.io.BufferedReader;
import java.io.FileReader;
​
public class BufferedReader_ {
    public static void main(String[] args) throws Exception {
        String filePath="d:\\java\\code\\Hello.java";
        //创建BufferedReader
        BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
        //读取
        String line;//按行读取,效率高 读取完返回null
       while ((line = bufferedReader.readLine())!=null){
           System.out.println(line);
        }
       bufferedReader.close();//只需关闭bufferedReader,底层FileReader会自动关闭
    }
}

package chapter21.BufferedStream;
​
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
​
public class BufferedWriter_ {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\ok.txt";
        //创建BufferedWriter
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));//filePath,true节点流上可追加
        bufferedWriter.write("hello,666");
        bufferedWriter.newLine(); //插入一个和系统相关的换行
        bufferedWriter.write("hello,666");
​
        bufferedWriter.close();//关闭外层即可。底层会自行关闭
    }
}

Buffered拷贝

package chapter21.BufferedStream;
​
import java.io.*;
//按字符读取,不能操作二进制文件(声音、视频、doc、pdf),否则会造成文件损坏
public class BufferedCopy_ {
    public static void main(String[] args) throws IOException {
        String srcFilePath="d:\\java\\code\\Hello.java";
        String destFilePath="d:\\java\\code\\Hello-.java";
        BufferedReader bufferedReader = new BufferedReader(new FileReader(srcFilePath));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(destFilePath));
        //先读取
        String line;
        while ((line=bufferedReader.readLine())!=null){
            //每读取一行遍写入
            bufferedWriter.write(line);
            bufferedWriter.newLine();//插入换行
        }
        System.out.println("已完成");
        if (bufferedReader!=null){
            bufferedReader.close();
        }
        if (bufferedWriter!=null){
            bufferedWriter.close();
        }
    }
}

package chapter21.BufferedStream;
​
import java.io.*;
//按字节拷贝
public class BufferedCopy02 {
    public static void main(String[] args) throws IOException {
        String srcFilePath="d:\\java\\picture\\注释.png";
        String desFilePath="d:\\java\\picture\\注释2.png";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(srcFilePath));
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(desFilePath));
        //循环读取文件,写入desFilePath
        byte[] buff=new byte[1024];
        int readLen=0;
        while ((readLen=bufferedInputStream.read(buff))!=-1){
            bufferedOutputStream.write(buff,0,readLen);
        }
        System.out.println("拷贝成功");
        //关闭流
        if (bufferedInputStream!=null){
            bufferedInputStream.close();
        }
        if (bufferedOutputStream!=null){
            bufferedOutputStream.close();
        }
    }
}

对象处理流

package chapter21.ObjectStream;
​
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
​
public class ObjectInputStream_ {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        String filePath="f:\\data.dat";//制定文件
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(filePath));
        //读取(反序列化)的顺序要和保存数据(序列化)的顺心一致,否则会异常
        System.out.println(objectInputStream.readInt());
        System.out.println(objectInputStream.readBoolean());
        System.out.println(objectInputStream.readChar());
        System.out.println(objectInputStream.readDouble());
        System.out.println(objectInputStream.readUTF());//要按顺序,缺一不可(报错)
        Object dog = objectInputStream.readObject();//对象里每个属性,成员对象都要实现接口序列化
        System.out.println("运行类型"+dog.getClass());
        System.out.println("dog信息"+dog);//object>dog
        //关闭外层流,底层自动关闭
        objectInputStream.close();
        //如要调用dog类的成员
        Dog dog2=(Dog) dog;//向下转型,不同包要引入
        System.out.println(dog2.getName());
    }
}

package chapter21.ObjectStream;
​
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
​
public class ObjectOutStream_ {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\data.dat";//序列化后,格式为dat
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
        //序列化数据到
        oos.writeInt(100);//int>Integer(实现了Serializable)
        oos.writeBoolean(true);//boolean>Boolean(实现了Serializable)
        oos.writeChar('a');//char>Character(实现了Serializable)
        oos.writeDouble(9.5);//double>Double(实现了Serializable)
        oos.writeUTF("哈哈");//String (实现了Serializable)
        oos.writeObject(new Dog("哈哈",10));//注意要实现Serializable接口
        oos.close();
        System.out.println("数据已保存(序列化形式)");
​
    }
}
class Dog implements Serializable {
    private String name;
    private int age;
    private static final long serialVersionUID=1L;//序列化版本号提高兼容性
​
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    public String getName() {
        return name;
    }
​
    public int getAge() {
        return age;
    }
​
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

标准输入输出流

package chapter21.Standard;
​
import java.util.Scanner;
​
public class InputAndOutput_ {
    public static void main(String[] args) {
        //标准输入 键盘
        System.out.println(System.in.getClass());//System.in 编译类型Inputstream 运行类型BufferedInputStream
        //标准输出 显示器
        System.out.println(System.out.getClass());//System.out 编译类型Printstream 运行类型PrintStream
​
        Scanner scanner = new Scanner(System.in);
        String next= scanner.next();
        System.out.println(next);
    }
}

转换流

乱码引出转换流

package chapter21.Transformation;
​
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
//默认情况下读取按照UTF-8读取
public class CodeQuestion {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\a.txt";
        BufferedReader br = new BufferedReader(new FileReader(filePath));
        String s = br.readLine();
        System.out.println("读取到的内容"+s);
        br.close();
    }
}

package chapter21.Transformation;
​
import java.io.*;
//解决编码问题引起的乱码
//字节流FileInputStream>>字符流InputStreamReader,指定编码
public class InputStreamReader_ {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\a.txt";
        //字节流FileInputStream>>字符流InputStreamReader 指定gbk编码
        InputStreamReader isr = new InputStreamReader(new FileInputStream(filePath),"gbk");
        //把InputStreamReader放入包装流BufferedReader
        BufferedReader br = new BufferedReader(isr);
        //读取
        String s = br.readLine();
        System.out.println("读取内容"+s);
        //关闭流
        br.close();
    }
}

package chapter21.Transformation;
​
import java.io.*;
​
public class OutputStreamWriter_ {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\a.txt";
        String charSet="gbk";
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(filePath),charSet );
        osw.write("hi,666");
        osw.close();
        System.out.println("按照"+charSet+"保存文件成功");
    }
}

打印流

package chapter21.Print;
import java.io.IOException;
import java.io.PrintStream;
//PrintStream 字节打印流/输出流
public class PrintStream_ {
    public static void main(String[] args) throws IOException {
        PrintStream out=System.out;//System.out本身就是输出流,赋给PrintStream
        out.print("666");
        out.write("hhh".getBytes());//print底层用的write,所以可直接调用write打印
​
        //修改打印输出的位置/设备
        System.setOut(new PrintStream("f:\\f1.txt"));
        System.out.println("666");//输出到f:\f1.txt
        out.close();
    }
}

package chapter21.Print;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
​
public class PrintWriter_ {
    public static void main(String[] args) throws IOException {
        PrintWriter printWriter=new PrintWriter(System.out);
        printWriter.print("hi,北京");
        PrintWriter printWriter1 = new PrintWriter(new FileWriter("f:\\f2.txt"));
        printWriter1.print("666");
        printWriter.close();
        printWriter1.close();//关闭流才能把数据写入文件
    }
}

配置文件Properties

ip=192.168.100.100
user=root
pwd=123456
package chapter21.Properties;
​
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
​
public class Properties01 {
    public static void main(String[] args) throws IOException {
        //读取文件,并获得相应ip
        BufferedReader bufferedReader = new BufferedReader(new FileReader("d:\\java\\project\\JavaSE\\base\\src\\chapter21\\Properties\\mysql.properties"));
        String line;
        while ((line=bufferedReader.readLine())!=null){//按行读取
            String[] split = line.split("=");//以"=”号拆分,拆成数组
            if ("ip".equals(split[0])){
                System.out.println(split[0]+"值是:"+split[1]);//只打印ip
            }
            System.out.println(split[0]+"值是:"+split[1]);
        }
        bufferedReader.close();
    }
}

package chapter21.Properties;
​
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
​
public class Properties02 {
    public static void main(String[] args) throws IOException {
        //使用Properties类读取mysql.properties文件
        Properties properties = new Properties();//创建Properties对象
        properties.load(new FileReader("d:\\java\\project\\JavaSE\\base\\src\\chapter21\\Properties\\mysql.properties"));//加载指定配置文件
        properties.list(System.out);//K-V显示控制台
        String user = properties.getProperty("user");//指定user输出
        String pwd = properties.getProperty("pwd");
        System.out.println("用户名"+user);
        System.out.println("密码"+pwd);
​
​
    }
}

#666
#Tue Jun 07 11:34:41 CST 2022
user=汤姆
pwd=888
charset=utf8
package chapter21.Properties;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
​
public class Properties03 {
    public static void main(String[] args) throws IOException {
        //Properties创建修改配置文件
        Properties properties = new Properties();//创建
        properties.setProperty("charset","utf8");
        properties.setProperty("user","汤姆");//中文unicode
        properties.setProperty("pwd","abc111");
        properties.setProperty("pwd","888");//已经有K则是修改 properties父类是Hashtable,底层就是Hashtable 核心方法
        properties.store(new FileOutputStream("d:\\java\\project\\JavaSE\\base\\src\\chapter21\\Properties\\mysql2.properties"),"666");//K-V存到文件中 “666”注释
​
        System.out.println("保存配置文件成功");
​
​
    }
}

IO流章节作业

package chapter21.Homework;
​
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
​
public class Homework01 {
    public static void main(String[] args) throws IOException {
        String Path="f:\\homework01";
        File file = new File(Path);
        if (!file.exists()){
            if (file.mkdirs()){
                System.out.println("创建"+Path+"创建成功");
            }else {
                System.out.println("创建失败");
            }
        }
        String filePath=Path+"\\hello.txt";
        file=new File(filePath);
        if (!file.exists()){
            if (file.createNewFile()){
                System.out.println(filePath+"创建成功");
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
                bufferedWriter.write("666");
                bufferedWriter.close();
            }else {
                System.out.println(filePath+"创建失败");
            }
        }else {
            System.out.println(filePath+"已经存在,不再创建。");
        }
    }
}

package chapter21.Homework;
​
import java.io.*;
​
public class Homework02 {
    public static void main(String[] args) throws IOException {
        String filePath="f:\\a.txt";
        BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));//转换流的对象扔给bufferReader可以读取不同编码,解决乱码
        BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"gbk"));
        String line;
        int lineNum=0;
        while ((line=bufferedReader1.readLine())!=null){//按行读取
            System.out.println(++lineNum+line);
        }
        if (bufferedReader1!=null){
            bufferedReader1.close();
        }
    }
}

name=k
age=5
color=red
package chapter21.Homework;
​
import java.io.*;
import java.util.Properties;
​
public class Homework03 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        String Path="d:\\java\\project\\JavaSE\\base\\src\\chapter21\\Homework\\dog.properties";
        Properties properties = new Properties();
        properties.load(new FileReader(Path));
        String name = properties.get("name")+"";//object>string
        int age = Integer.parseInt(properties.get("age")+"");//object>int
        String color = properties.get("color") + "";//object>string
        Dog dog = new Dog(name, age,color);
        System.out.println(dog);
        //序列化
        String serPath="f:\\dog.dat";
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(serPath));
        objectOutputStream.writeObject(dog);
        objectOutputStream.close();
        System.out.println("dog对象序列化完成");
       m1();
    }
    //反序列化
    public static void m1() throws IOException, ClassNotFoundException {
        String serPath="f:\\dog.dat";
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(serPath));
        Dog dog = (Dog) objectInputStream.readObject();
        System.out.println(dog);
        System.out.println("反序列完成");
        objectInputStream.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 + '\'' +
                '}';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值