Java_System.in

来源:互联网 发布:考研培训班 网络 编辑:程序博客网 时间:2024/04/30 11:34

System.in

import java.io.*; 

public class IOStreamDemo { 

public void samples() throws IOException { 

//1. 这是从键盘读入一行数据,返回的是一个字符串 
BufferedReader stdin =new BufferedReader(newInputStreamReader(System.in)); 
System.out.print("Enter a line:"); 
System.out.println(stdin.readLine()); 

//2. 这是从文件中逐行读入数据 

BufferedReader in = new BufferedReader(newFileReader("IOStreamDemo.java")); 
String s, s2 = new String(); 
while((s = in.readLine())!= null) 
s2 += s + "\n"; 
in.close(); 

//3. 这是从一个字符串中逐个读入字节 
StringReader in1 = new StringReader(s2); 
int c; 
while((c = in1.read()) != -1) 
System.out.print((char)c); 

//4. 这是将一个字符串写入文件 
try { 
BufferedReader in2 = new BufferedReader(newStringReader(s2)); 
PrintWriter out1 = new PrintWriter(new BufferedWriter(newFileWriter("IODemo.out"))); 
int lineCount = 1; 
while((s = in2.readLine()) != null ) 
out1.println(lineCount++ + ": " + s); 
out1.close(); 
} catch(EOFException e) { 
System.err.println("End of stream"); 




对于上面的例子,需要说明的有以下几点: 

1.BufferedReader是Reader的一个子类,它具有缓冲的作用,避免了频繁的从物理设备中读取信息。它有以下两个构造函数: 
BufferedReader(Reader in) 
BufferedReader(Reader in, int sz) 

这里的sz是指定缓冲区的大小。 

它的基本方法: 
void close() //关闭流 

void mark(int readAheadLimit) //标记当前位置 

boolean markSupported() //是否支持标记 

int read() //继承自Reader的基本方法 

int read(char[] cbuf, int off, int len)//继承自Reader的基本方法 

String readLine() //读取一行内容并以字符串形式返回 

boolean ready() //判断流是否已经做好读入的准备 

void reset() //重设到最近的一个标记 

long skip(long n) //跳过指定个数的字符读取 

2.InputStreamReader是InputStream和Reader之间的桥梁,由于System.in是字节流,需要用它来包装之后变为字符流供给BufferedReader使用。 

3. PrintWriter out1 = new PrintWriter(new BufferedWriter(newFileWriter("IODemo.out"))); 

这句话体现了Java输入输出系统的一个特点,为了达到某个目的,需要包装好几层。首先,输出目的地是文件IODemo.out,所以最内层包装的是FileWriter,建立一个输出文件流,接下来,我们希望这个流是缓冲的,所以用BufferedWriter来包装它以达到目的,最后,我们需要格式化输出结果,于是将PrintWriter包在最外层。
原创粉丝点击