System类管理标准输入输出流和错误流
一、使用System.out作为输出流
package cn.sisy.io;
import java.io.*;
public class SystemDemo01 {
public static void main(String[] args)throws Exception {
//抽象类通过子类实现不同的功能
OutputStream out = null;
// System.out是PrintStream,是OutputStream子类
//谁为我的抽象类实例化,那么我的输出就是向着谁的
out = System.out;
// 现在的out对象具备了向屏幕上打印内容的能力
String str = "Hello,World" ;
out.write(str.getBytes()) ;
out.close() ;
}
}
二、使用PrintWriter结合System.out提升打印能力
打印流包括PrintStream和PrintWriter
package cn.sisy.io;
import java.io.*;
public class SystemDemo02 {
public static void main(String[] args)throws Exception {
PrintWriter out = new PrintWriter(System.out) ;
// 具备了向文件中打印数据的能力
//打印的能力得到了增强
out.println(true) ;
out.println(30) ;
out.println("Hello,World") ;
out.close() ;
}
}
true
30
Hello,World
三、使用键盘输入流System.in
package cn.sisy.io;
import java.io.*;
public class SystemDemo03 {
public static void main(String[] args)throws Exception {
InputStream in = null ;
// 数据等待键盘的输入
in = System.in ;
byte b[] = new byte[1024] ;
// 读的时候是等待用户的输入
int len = in.read(b) ;
in.close() ;
System.out.println("输入的内容为:"+new String(b,0,len)) ;
}
}
a b c d
输入的内容为:a b c d
四、BufferedReader以及转换流InputStreamReader和OutputStreamReader
思考上面的程序容易发现,键盘输入的大小事收数组大小限制的,这样可能会导致中文乱码的情况产生。(*一个中文是两个字节)
当然程序可以通过改成从键盘一直读数据的方式来解决大小限制的问题,但我们下面介绍一种更加好的方式。
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in= new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将DataInputStream 用于文字输入的程序进行本地化。
InputStreamReader和OutputStreamReader:前者将输入字节流转换成字符流, 后者将输出字符流转换成字节流。
import java.io.* ;
public class SystemDemo04{
public static void main(String args[]){
BufferedReader buf = null ;
// 此处只是准备了要从键盘中读取数据
buf = new BufferedReader(new InputStreamReader(System.in)) ;
String str = null ;
for(int i=0;i<2;i++){
try{
System.out.print("请输入内容:") ;
str = buf.readLine() ;
}
catch (Exception e){
}
System.out.println("输入的内容为:"+str) ;
System.out.println("--------------------------------") ;
}
}
}
分享到:
相关推荐
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...
031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第12章:JAVA IO〗_IO操作实例笔记.pdf 031211_【第12章:JAVA IO】_Scanner笔记.pdf 031212_...
<java.lang>System 89 <java.lang>Runtime 90 <java.lang>Math 90 <java.lang>.Date:日期类,月份从0—11 92 <java.lang> Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符...
import java.io.File; import java.io.FileInputStream; import java.util.Properties; public class ReadConfigation{ /** * 属性文件全名 */ private static final String PFILE ="Config....
4.1.6 java.lang.System 4.1.7 java.lang.Cloneable 4.1.8 java.lang.Thread 4.2 java.io包 4.3 java.util包 4.3.1 java.util.StringTokenizer 4.3.2 java.util.Random 4.3.3 Java2集合框架 4.4 总结 4.5 练习 第2篇...
四、IO流及异常处理 1、流和文件 1.1 流 1.2 文件 2、常用流类 2.1 字节流 2.1.1 InputStream(输入流) 2.1.2 OutputStream(输出流) 2.1.3 FileInputStream(文件输入流) 2.1.4 FileOutputStream(文件输出流) 2.1.5...
本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,...
1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发...
知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以...
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; //示例程序:记录下Form提交上来的数据,并存储到Log文件中 public class ReceiveServlet extends HttpServlet { public void doPost...
import java.io.*; public class MyClass { public static void main(String[] args) { int j=1; for(int i=1; _______; i++) { System.out.println(i+"*"+j+"="+_______); } } } 25. class (c++)+"\t" ...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...