字符编码:
国标编码:
GBK包含简体中文和繁体中文;
GB2312只包含简体中文。
UNICODE编码: java提供的16进制编码,可以描述世界上任意的文字信息,传输负担大。
ISO8859-1: 国际通用编码,但是所有的编码都需要进行转换
UTF编码: 相当于结合了UNICODE、ISO8859-1,也就是说需要使用到16进制文字使用UNICODE,而 如果只是字母就使用ISO8859-1,而常用的就是UTF-8编码形式。
内存操作流
概念:
内存作为操作终端的IO操作;
内存流也分为两类:
1. 字节内存流:ByteArrayInputStream、ByteArrayOutputStream
2. 字符内存流:CharArrayReader、CharArrayWriter
实例:
String msg = "hello world";
// 实例化InputStream类对象,实例化的时候需要将你操作的数据保存到内存之中
// 终读取的就是你设置的内容。
InputStream input = new ByteArrayInputStream(msg.getBytes()) ;
OutputStream output = new ByteArrayOutputStream() ;
int temp = 0 ;
while((temp = input.read()) != -1) {
// 每个字节进处理,处理之后所有数据都在outputStream类中
output.write(Character.toUpperCase(temp)) ;
}
// 直接输出output对象
System.out.println(output) ;
input.close() ;
output.close() ;
只是使用InputStream类,在进行数据完整读取的时候会很不方便,结合内存流的使用会好很多。
打印流:
概念:
打印流解决的就是OutputStream的设计缺陷,属于OutputStream功能的加强版
解决两方面:
1. 所有的数据必须转换为字节数组。
2. 如果要输出的是int、double等类型就不方便了
分类:
字节打印流:PrintStream、字符打印流:PrintWriter(使用率较高)
打印流的设计属于装饰设计模式:核心依然是某个类的功能,但是为了得到更好的操作效果,让其支持的功能更多 一些。
格式化输出:
PrintWriter printUtil = new PrintWriter(new FileOutputStream(new File("/Users/ma/Desktop/test.txt"))) ;
printUtil.printf("姓名:%s,年龄:%d,工资:%1.2f", name,age,salary) ;
printUtil.close();
格式化字符串:
String str = String.format("姓名:%s,年龄:%d,工资:%1.2f", name,age,salary, name,age,salary) ;
System.out.println(str);
System 类对IO支持:
1. 标准输出(显示器) : public final static PrintStream out
2. 错误输出 : public final static PrintStream err
3. 标准输入(键盘):public final static InputStream in
两种输入流:
BufferedReader类:
属于一个缓冲的输入流,而且是一个字符流的操作对象
实例:
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)) ;
System.out.println("请输入信息 :") ;
// 默认的换行模式是BufferedReader的大缺点
String str = buf.readLine() ;
// 默认使用回车换行
System.out.println("输入信息为:" + str );
java.util.Scanner类
1. 判断是否有指定类型数据: public boolean hasNextXxx()
2. 取得指定类型的数据: public 数据类型 nextXxx()
3. 定义分隔符:public Scanner useDelimiter(Pattern pattern)
4. 构造方法:public Scanner(InputStream source)
实例:
Scanner scanner = new Scanner(System.in) ;
System.out.println("请输入数据:") ;
if (scanner.hasNext()) {
// 有输入内容,不判断空字符串
System.out.println("输入内容为: "+scanner.next());
}
scanner.close() ;
以后除了二进制文件拷贝的处理之外,那么只要是针对程序的信息输出都是用打印流(PrintStream、 PrintWriter),信息输出使用Scanner。
JavaIO——标准输入输出
最新推荐文章于 2024-03-10 10:15:00 发布