java I/O流(3)键盘录入,读取转换流和写入转换流

来源:互联网 发布:mac同步iphone照片 编辑:程序博客网 时间:2024/06/13 16:59

1.读取键盘录入的一行数据并打印

import java.io.*;
public class helloworld {
  public static void main(String[]args)throws IOException
  {
    InputStream in=System.in;
    int by=0;
    StringBuilder sb=new StringBuilder();
    while(true)
    {
    int ch=in.read();
    if(ch=='\r') continue;
    if(ch=='\n') {
    String s=sb.toString();
    if("over".equals(s)) break;
    System.out.println(s.toUpperCase());
    sb.delete(0, sb.length());
    }
    else{
    sb.append((char)ch);
    }
        }
          }

}

2、能不能直接读取一行,类似于readLine()的方法,Java .io中reader类有个子类InputStreamReader,将字节流转换为字符流,再进行操作

InputStream in=System.in;

InputStreamReader isr=new InputStreamReader(in);

BufferedReader bufr=new BufferedReader(isr);

String line=null;

while((line=bufr.readLine())!=null)

{

if("over".equals(line))  break;

System.out.println(line.toUpperCase());

}

bufr.close();

3.除了这个方法之外,还可以用Scanner类,这个类在java.util.*包中

import java.util.Scanner;

Scanner sc=new Scanner(System.in);

System.out.println(“请输入你的姓名”);

String name=sc.nextLine();

System.out.println("请输入你的年龄");

int age=sc.nextInt();

System.out.println("请输入你的工资");

float salary=sc.next.nextFloat();

System.out.println("你的信息如下:");

System.out.println(" 姓名:"+name+“\n年龄:"+age+"\n工资"+salary);

Scanner类,不管是对于字符串还是整型数据或者是float类型的变量,只需做一点小小的改变,就能够实现功能

4、Writer类中的OutputStreamWriter写入转换流

      OutputStream out=System.out;
      OutputStreamWriter osw=new OutputStreamWriter(out);
      BufferedWriter bufw=new BufferedWriter(osw);

      InputStream in=System.in;

       InputStreamReader isr=new InputStreamReader(in);
       BufferedReader bufr=new BufferedReader(isr);
        
        String line=null;
        while((line=bufr.readLine())!=null)
        {
        if("over".equals(line)) break;
        bufw.write(line.toUpperCase());
        bufw.newLine();
        bufw.flush();//虽说字符流的缓冲区关闭前可能会刷新,如果只读取一行的话,
                     //写成bufw.close()也行,但这是在while循环中关闭之后无法进入下一次循环
        }

       bufw.close();

       bufr.close();


0 0
原创粉丝点击