新手必读 Java中流的概念
寝室同学问了我个关于Java流的问题,在解答完后很有感触,我认为可能所有新手都可能有这样的问题,所以总结一下发出来,呵呵.供大家参考:
那,同学问我的题,提其实我也没太听明白什么意思,因为他表达不请,但有一点我是明确的,就是他要从键盘输入数(控制台的那种),然后计算出长方形的面积.类似这个问题.呵呵,其实这个问题很简单,在C 里只需cin就ok了,但在java里,不是那么简单,他本来用System.in.read();但这个函数独进后返回的是int形,但实际上是ASCII码,比如输入1,那么返回的是51(记不清1的ASC码了),而不是1,当然你可以给他转换成char但char有转不了int,呵呵,总之很麻烦,俺也说不清,所以就换了一种方法.所以我换了一种方法,该方法如下,我想大概有不少新人都不太会,所以给出源码如下:
packagetest;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassTestInOut{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成方法存根
Testtest=newTest();
BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));
System.out.print("请输入长方形的长:");
try{
test.setA(Float.parseFloat(stdin.readLine()));
System.out.print("请输入长方形的宽:");
test.setB(Float.parseFloat(stdin.readLine()));
test.setArea();
System.out.print("该长方形的面积是:");
System.out.println(test.getArea());
}catch(IOExceptione){
//TODO自动生成catch块
e.printStackTrace();
}
}
}
classTest{
privatefloata;
privatefloatb;
publicfloatgetB(){
returnb;
}
publicvoidsetB(floatb){
this.b=b;
}
publicvoidsetA(floata){
this.a=a;
}
publicfloatgetA(){
returna;
}
privatefloatarea;
publicfloatgetArea(){
returnarea;
}
publicvoidsetArea(){
area=a*b;
}
}
执行结果:
请输入长方形的长:3
请输入长方形的宽:4
该长方形的面积是:12.0
这里面的BufferedReader便是个流了,呵呵,所以我就顺便把流的东西总结了一下,请看下面代码:
packagetest;
importjava.io.*;
publicclassIOStreamDemo{
publicvoidsamples()throwsIOException{
//1.这是从键盘读入一行数据,返回的是一个字符串
BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in));
System.out.print("Enteraline:");
System.out.println(stdin.readLine());
//2.这是从文件中逐行读入数据
BufferedReaderin=newBufferedReader(newFileReader("IOStreamDemo.java"));
Strings,
s2=newString();
while((s=in.readLine())!=null)
s2 =s "";
in.close();
//3.这是从一个字符串中逐个读入字节
StringReaderin1=newStringReader(s2);
intc;
while((c=in1.read())!=-1)
System.out.print((char)c);
//4.这是将一个字符串写入文件
try{
BufferedReaderin2=newBufferedReader(newStringReader(s2));
PrintWriterout1=newPrintWriter(newBufferedWriter(
newFileWriter("IODemo.out")));
intlineCount=1;
while((s=in2.readLine())!=null)
out1.println(lineCount ":" s);
out1.close();
}catch(EOFExceptione){
System.err.println("Endofstream");
}
}
}
我想看了上面的代码,大家应该对流有了一个简单的认识,会用它从键盘读数据了.