Day34-对象处理流细节、标准输入输出流、转换流、打印流
对象处理流使用细节
标准输入输出流
package com.ghy.standard;
import java.util.Scanner;
public class InputAndOutput01 {
public static void main(String[] args) {
//System.in 的编译类型是 InputStream
//System.in 的运行类型是 BufferedInputStream
//表示的是标准输入 键盘
System.out.println(System.in.getClass());
//System.out 的编译类型是 PrintStream
//System.out 的运行类型也是 PrintStream
//表示的是标准输出 显示器
System.out.println(System.out.getClass());
System.out.println("你好小赵");
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println("next="+next);
}
}
输出
class java.io.BufferedInputStream
class java.io.PrintStream
你好小赵
小赵最强
next=小赵最强
乱码引出转换流
package com.ghy.transformation;
import java.io.BufferedReader;
import java.io.FileReader;
//看一个中文乱码问题
public class CodeQuestion {
public static void main(String[] args) throws Exception{
//读取文件D:\code\LoveStory.txt到程序
String filePath = "D:\\code\\LoveStory.txt";//路径
//1.创建字符输入流 BufferedReader (处理流)
BufferedReader br = new BufferedReader(new FileReader(filePath));
//2.读取
//默认情况下,读取文件是按照UTF-8 编码
String data = br.readLine();
System.out.println("读取到的内容: "+ data);
//3.关闭流
br.close();
}
}
输出
读取到的内容: 小赵最厉害!
- 如果文件保存编码如果不是UTF-8就会出现乱码
再次输出
读取到的内容: С����������
InputStreamReader
package com.ghy.transformation;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
//演示使用 InputStreamReader01 解决中文乱码问题
//将字节流FileInputStream 转换成字符流 InputStreamReader 指定编码gbk
public class InputStreamReader01 {
public static void main(String[] args) throws Exception{
//读取文件D:\code\LoveStory.txt到程序
String filePath = "D:\\code\\LoveStory.txt";//路径
//1.把 FileInputStream 转成 InputStreamReader
//2.指定编码gbk
InputStreamReader ir = new InputStreamReader(new FileInputStream(filePath),"gbk");//看文件编码形式
//3.把 InputStreamReader 传入 BufferedReader(处理流)
BufferedReader br = new BufferedReader(ir);
//4.读取
String data = br.readLine();
System.out.println("读取到的内容:"+data);
//关闭流
br.close();
}
}
输出
读取到的内容:小赵最厉害!
OutputStreamWriter
package com.ghy.transformation;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
//演示OutputStreamWriter的使用
//将 FileOutputStream 字节流 转换成 OutputStreamWriter 字符流
//指定编码方式 gbk/utf-8/utf8
public class OutputStreamWriter01 {
public static void main(String[] args) throws Exception{
String filePath = "D:\\code\\LoveStory.txt";//路径
String charSet = "gbk";
OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(filePath),charSet);
BufferedWriter bw = new BufferedWriter(ow);
ow.write("小赵最强!");
ow.close();
System.out.println("按照" +charSet+"保存文件成功!");
}
}
输出
按照gbk保存文件成功!
PrintStream
(只有输出流)
package com.ghy.printstream;
import java.io.PrintStream;
//演示PrintStream(字节打印流)
public class PrintStream01 {
public static void main(String[] args) throws Exception{
PrintStream out = System.out;
//在默认情况下,PrintStream输出数据的位置是 标准输出 ,既显示器
out.print("小赵最棒!");
//因为print底层使用的是write,所以我们可以直接调用write进行打印(输出)
out.write("小赵最强!".getBytes());
out.close();
//我们可以修改打印流输出的位置/设备
//修改到某个路径文件
//System.setOut(new PrintStream(路径));
//System.out.println("输出的话");
}
}
输出
小赵最棒!小赵最强!
PrintWriter
package com.ghy.printstream;
import java.io.FileWriter;
import java.io.PrintWriter;
//演示PrintWriter使用方式
public class PrintWriter01 {
public static void main(String[] args) {
// 标准输出 : PrintWriter pw = new PrintWriter(System.out);
//PrintWriter pw = new PrintWriter(new FileWriter(路径));
PrintWriter pw = new PrintWriter(System.out);
pw.println("小赵哈喽!");
pw.close();//flash + 关闭流,才会将数据写入到文件
}
}
配置文件引出Properties
package com.ghy.properties;
import java.io.BufferedReader;
import java.io.FileReader;
public class Properties01 {
public static void main(String[] args) throws Exception{
//读取mysql.properties文件,并得到ip user pwd
BufferedReader br = new BufferedReader(new FileReader("src\\mysql.properties"));
String line =null;
while((line = br.readLine())!=null){//循环读取
//如果我们需要得到指定ip的值,需要进行判断,很麻烦
String[] split = line.split("=");
System.out.println(split[0]+ "值是:" + split[1]);
}
br.close();
}
}
输出
ip值是:192.168.100.100
user值是:root
pwd值是:123456