package chapter10.branch01;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestStandarInput {
public static void main(String[] args) throws Exception {
new TestStandarInput().input2();
}
/**
*
* <b>方法名:</b>
* <p>input1<p>
* <b>功能描述:</b>
* <p>
* 以行的方式进行读取的,BufferedReader对字符进
* 行了包装, 所以打印出来的跟输入进去的是一样的
* 因为字节跟字符的转换,它的内部已经整理好了
* <p>
* @throws Exception
*/
public void input1() throws Exception {
String s=null;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
s=br.readLine();
while(s!="") {
System.out.println("你输入的内容是:"+s);
s=br.readLine();
}
//使用完了一定要关闭它否则就会浪费资源
br.close();
}
/**
*
* <b>方法名:</b>
* <p>input2<p>
* <b>功能描述:</b>
* <p>
* 以字节的方式去读取内容,打印出来的时候依然是
* 按照字节的方式打印出来
* <p>
* @throws Exception
*/
public void input2() throws Exception {
/**
* 这个地方也完全可以定义为int类型,因为char类型
* 到int类型之间的转换是隐式的转换,不过问题在于
* 如果写成了int那么打印出来的肯定就只是数字了
*/
char s;
InputStreamReader isr=new InputStreamReader(System.in);
s=(char) isr.read();
while(s!=0) {
System.out.println("你输入的内容是:"+s);
s=(char) isr.read();
}
//使用完了一定要关闭它否则就会浪费资源
isr.close();
}
}
从控制台获取输入数据写入本地文件
File f=new File("E:\\testio\\dada.txt");
f.createNewFile();
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(isr);
PrintWriter out=new PrintWriter(new FileWriter(f));
String s=in.readLine();
while(!s.equals("")) {
out.println(s);
s=in.readLine();
}
//用完了之后一定要关闭掉那些reader之类的东西
out.flush();
// out.close();
// in.close();
上面的写入使用的是printWriter,使用它的好处在于可以有缓冲,
因此可以加快读取的速度,如果它读取的数据不够多的话,那么它
是不会向文件里面写入的,直到它读取了它设置的默认的大小之后
在会自动的flush一下把当前里面的内容输出到文件,为了证明上面
的结论可以做一个实验.
第一步:把上面的flush和close全部注释掉,这样的话,如果数据少的话
,printWriter不会把当前的内容写入到文件中,在程序运行的时候输入
少量字符,比如123然后再连续回车,这样程序结束后到指定的目录下
去查看文件,会发现文件是空的,因为数据太少了,所以程序没来得及
输出就结束了
第二步:同样的操作,随便把flush或者是close打开,再去执行第一步
的操作,文件里面都是有记录的,因为close或者flush都会使程序把
当前的内容全部输出出去.