java学习之路---IO----System和BufferReader类
2013-11-25 21:20
459 查看
1.System.out
System.out是PriteStream的对象,在PriteStream中定义一系列的print()和println()
public class PrintDemo1
{
public static void main(String[]
args) throws Exception{
[align=left]
[/align]
[align=left] OutputStream out=System. out;//此时的输出时向屏幕输出的[/align]
[align=left] [/align]
[align=left] out.write( "hello world".getBytes());[/align]
[align=left] [/align]
[align=left] out.close();[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]结果:[/align]
[align=left]
[/align]
[align=left]hello world[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]2.System.err输出错误信息[/align]
[align=left]这个就不写了[/align]
[align=left]
[/align]
[align=left]3.System.in键盘输入流[/align]
[align=left]
[/align]
public class PrintDemo3
{
public static void main(String[]
args) throws Exception{
[align=left] InputStream in=System. in;[/align]
[align=left] [/align]
[align=left] byte b[]=new byte[1024];[/align]
[align=left] [/align]
[align=left] System. out.println("请输入内容" );[/align]
[align=left] [/align]
[align=left] int len=in.read(b);[/align]
[align=left] [/align]
[align=left] in.close();[/align]
[align=left] System. out.println(new String(b,0,len));[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]结果:[/align]
请输入内容
asdasd
asdasd
上面程序会如果长度过长就会超过byte[1024],就会出现不会完全输出的结果
那我们可以不要长度限制
public class PrintDemo3 {
public static void main(String[]
args) throws Exception{
InputStream in=System. in;
StringBuffer buf= new StringBuffer();//用来接收数据
System. out.println("请输入内容" );
int temp=0;
int len=0;
while((temp=in.read())!=-1){
char c=(char )temp;
if(c=='\n' )
{
break;
}
buf.append(c);
}
in.close();
System. out.println(new String(buf));
}
}
结果:
[align=left]请输入内容[/align]
[align=left]我爱你[/align]
[align=left]éŽ´æˆ åŸæµ£ï¿½[/align]
[align=left]
[/align]
[align=left]有出现了乱码,那我们需要怎样做喃?[/align]
[align=left]
[/align]
[align=left]我们可以让字符串全部输入缓冲区,然后一次性输出,这样就可以避免代码的乱码了[/align]
[align=left]
[/align]
[align=left] 需要用到BufferReader类[/align]
[align=left]
[/align]
buffReader类直接收字符流的实例
public class BufferReaderDemo {
public static void main(String[]
args) throws Exception{
[align=left] BufferedReader buf= new BufferedReader(new InputStreamReader(System.in ));[/align]
[align=left] [/align]
[align=left] String str= null;[/align]
[align=left] [/align]
[align=left] System. out.println("请输入内容" );[/align]
[align=left] [/align]
[align=left] str=buf.readLine();[/align]
[align=left] buf.close();[/align]
[align=left] System. out.println(str);[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]结果:[/align]
[align=left]请输入内容[/align]
[align=left]sadasdasdasdasdasd[/align]
[align=left]sadasdasdasdasdasd[/align]
[align=left]
[/align]
[align=left]下面来做一些例子:[/align]
[align=left]
[/align]
[align=left] 加法操作:[/align]
[align=left]
[/align]
[align=left] public class BufferReaderDemo1 {[/align]
public static void main(String[]
args)throws Exception {
[align=left] BufferedReader buf= null;[/align]
[align=left] buf= new BufferedReader(new InputStreamReader(System.in ));[/align]
[align=left] [/align]
[align=left] String str= null;[/align]
[align=left] [/align]
[align=left] System. out.println("请输入第一个数字" );[/align]
[align=left] [/align]
[align=left] str =buf.readLine();[/align]
[align=left] int i=Integer.parseInt(str);[/align]
[align=left] [/align]
[align=left] System. out.println("请输入第二个数字" );[/align]
[align=left] [/align]
[align=left] str=buf.readLine();[/align]
[align=left] [/align]
[align=left] int j=Integer.parseInt(str);[/align]
[align=left] [/align]
[align=left] buf.close();[/align]
[align=left] [/align]
[align=left] System. out.println(i+"+" +j+"=" +(i+j));[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]结果:[/align]
请输入第一个数字
2
请输入第二个数字
3
2+3=5
System类也可以改变System.in的输入流来源,也可以改变System.out和System.err的输出位置
public class SystemDemo1 {
public static void main(String[]
args)throws Exception {
System. setOut(new PrintStream( new FileOutputStream(new File("f:"+File.separator +"b.txt" ))));
System. out.println("like" );
System. out.println("hello" );
}
}
程序运行后,不会在屏幕上显示,而是在文件b.txt中
system.err最好不要输出重定向
System.in,改变输入来源
public class SystemDemo2
{
public static void main(String[]
args) throws Exception{
[align=left] System. setIn(new FileInputStream( new File("f:"+File.separator +"a.txt" )));[/align]
[align=left] [/align]
[align=left] InputStream in=System. in;[/align]
[align=left] int len=0;[/align]
[align=left] byte b[]=new byte[1024];[/align]
[align=left] len=in.read(b);[/align]
[align=left] in.close();[/align]
[align=left] System. out.println(new String(b,0,len));[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]结果:[/align]
[align=left]hello like!!![/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]输入来源来自文件a.txt中[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
相关文章推荐
- java学习之路----IO-------字节流和字符流的区别,文件的复制
- Java IO学习8:System类对IO的支持
- java学习之路----IO---Scanner类
- java学习之路---IO-----File类
- java学习之路----IO---学习工作经历,乱码的产生
- Hive学习1_hive配置遇到的问题:Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%
- netty框架学习之路(一)—— Java网络IO模型
- java学习之路---IO----字符流
- java学习之路----IO----内存操作流和管道流
- java学习之路----IO----合并流和文件操纵流
- Java IO学习笔记(八):System类对IO的支持
- 重走java学习之路----IO框架(一)
- 学习笔记之java.io包中的字符流(上)—— Reader和Writer
- java入门学习之IO
- android学习之路---java部分 I/O流
- Java IO学习笔记
- Java学习之路---计算圆形的面积和周长
- java学习之路 之 异常处理练习题
- java 学习之路
- Java基础学习笔记十九 IO