吴裕雄--天生自然JAVAIO操作学习笔记:IO操作实例、Scanner、数据操作流与合并流

import java.io.* ;
public class ExecDemo01{
    public static void main(String args[]) throws Exception{
        int i = 0 ;
        int j = 0 ;
        BufferedReader buf = null ;        // 接收键盘的输入数据
        buf = new BufferedReader(new InputStreamReader(System.in)) ;
        String str = null ;    // 接收数据
        System.out.print("请输入第一个数字:") ;
        str = buf.readLine() ;    // 接收数据
        i = Integer.parseInt(str) ;    // 将字符串变为整数
        System.out.print("请输入第二个数字:") ;
        str = buf.readLine() ;    // 接收数据
        j = Integer.parseInt(str) ;    // 将字
        System.out.println(i + " + " + j + " = " + (i + j)) ;
    }
};
import java.io.* ;
public class ExecDemo02{
    public static void main(String args[]) throws Exception{
        int i = 0 ;
        int j = 0 ;
        InputData input = new InputData() ;
        i = input.getInt("请输入第一个数字:","输入的数据必须是数字,请重新输入!") ;
        j = input.getInt("请输入第二个数字:","输入的数据必须是数字,请重新输入!") ;
        System.out.println(i + " + " + j + " = " + (i + j)) ;
    }
};
import java.io.* ;
public class ExecDemo03{
    public static void main(String args[]) throws Exception{
        new Menu() ;
    }
};
import java.io.* ;
import java.util.* ;
import java.text.* ;
public class InputData{
    private BufferedReader buf = null ;
    public InputData(){// 只要输入数据就要使用此语句
        this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
    }
    public String getString(String info){    // 得到字符串信息
        String temp = null ;
        System.out.print(info) ;    // 打印提示信息
        try{
            temp = this.buf.readLine() ;    // 接收数据
        }catch(IOException e){
            e.printStackTrace() ;
        }
        return temp ;
    }
    public int getInt(String info,String err){    // 得到一个整数的输入数据
        int temp = 0 ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d+$")){    // 判断是否由数字组成
                temp = Integer.parseInt(str) ;    // 转型
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
    public float getFloat(String info,String err){    // 得到一个小数的输入数据
        float temp = 0 ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d+.?\d+$")){    // 判断是否由数字组成
                temp = Float.parseFloat(str) ;    // 转型
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
    public Date getDate(String info,String err){    // 得到一个小数的输入数据
        Date temp = null ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d{4}-\d{2}-\d{2}$")){    // 判断是否由数字组成
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
                try{
                    temp = sdf.parse(str) ;    // 将字符串变为Date型数据
                }catch(Exception e){}
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
};
public class Menu{
    public Menu(){
        while(true){
            this.show() ;        // 无限制调用菜单的显示
        }
    }
    public void show(){
        System.out.println("===== Xxx系统 =====") ;
        System.out.println("    [1]、增加数据") ;
        System.out.println("    [2]、删除数据") ;
        System.out.println("    [3]、修改数据") ;
        System.out.println("    [4]、查看数据") ;
        System.out.println("    [0]、系统退出
") ;
        InputData input = new InputData() ;
        int i = input.getInt("请选择:","请输入正确的选项!") ;
        switch(i){
            case 1:{
                Operate.add() ;        // 调用增加操作
                break ;
            }
            case 2:{
                Operate.delete() ;    // 调用删除操作
                break ;
            }
            case 3:{
                Operate.update() ;    // 调用更新操作
                break ;
            }
            case 4:{
                Operate.find() ;        // 调用查看操作
                break ;
            }
            case 0:{
                System.exit(1) ;        // 系统退出
                break ;
            }
            default:{
                System.out.println("请选择正确的操作!") ;
            }
        }
    }
};
public class Operate{
    public static void add(){    // 增加操作
        System.out.println("** 选择的是增加操作") ;
    }
    public static void delete(){    // 删除操作
        System.out.println("** 选择的是删除操作") ;
    }
    public static void update(){    // 更新操作
        System.out.println("** 选择的是更新操作") ;
    }
    public static void find(){    // 查看操作
        System.out.println("** 选择的是查看操作") ;
    }
};
import java.io.* ;
import java.util.* ;
public class TestInput{
    public static void main(String args[]) throws Exception{
        InputData input = new InputData() ;
        // float f = input.getFloat("请输入小数:","输入的不是小数,请重新输入!") ;
        // System.out.println("小数:" + f) ;
        Date d = input.getDate("请输入日期,格式为(yyyy-mm-dd):","输入的日期格式不正确,请重新输入") ;
        System.out.println("日期" + d) ;
    }
};
import java.util.* ;
public class ScannerDemo01{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
        System.out.print("输入数据:") ;
        String str = scan.next() ;    // 接收数据
        System.out.println("输入的数据为:" + str) ;
    }
};
import java.util.* ;
public class ScannerDemo02{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
        System.out.print("输入数据:") ;
        scan.useDelimiter("
") ;
        String str = scan.next() ;    // 接收数据
        System.out.println("输入的数据为:" + str) ;
    }
};
import java.util.* ;
public class ScannerDemo03{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
        int i = 0 ;
        float f = 0.0f ;
        System.out.print("输入整数:") ;
        if(scan.hasNextInt()){    // 判断输入的是否是整数
            i = scan.nextInt() ;    // 接收整数
            System.out.println("整数数据:" + i) ;
        }else{
            System.out.println("输入的不是整数!") ;
        }
        System.out.print("输入小数:") ;
        if(scan.hasNextFloat()){    // 判断输入的是否是小数
            f = scan.nextFloat() ;    // 接收小数
            System.out.println("小数数据:" + f) ;
        }else{
            System.out.println("输入的不是小数!") ;
        }
    }
};
import java.util.* ;
import java.text.* ;
public class ScannerDemo04{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in) ;    // 从键盘接收数据
        String str = null ;
        Date date = null ;
        System.out.print("输入日期(yyyy-MM-dd):") ;
        if(scan.hasNext("^\d{4}-\d{2}-\d{2}$")){    // 判断
            str = scan.next("^\d{4}-\d{2}-\d{2}$") ;    // 接收
            try{
                date = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;
            }catch(Exception e){}
        }else{
            System.out.println("输入的日期格式错误!") ;
        }
        System.out.println(date) ;
    }
};
import java.util.* ;
import java.text.* ;
import java.io.* ;
public class ScannerDemo05{
    public static void main(String args[]){
        File f = new File("D:" + File.separator + "test.txt") ;    // 指定操作文件
        Scanner scan = null ;
        try{
            scan = new Scanner(f) ;    // 从键盘接收数据
        }catch(Exception e){}
        StringBuffer str = new StringBuffer() ;
        while(scan.hasNext()){
            str.append(scan.next()).append('
')    ;    //    取数据
        }
        System.out.println("文件内容为:" + str) ;
    }
};
import java.io.DataInputStream ;
import java.io.File ;
import java.io.FileInputStream ;
public class DataInputStreamDemo{
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        DataInputStream dis = null ;        // 声明数据输入流对象
        File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径
        dis = new DataInputStream(new FileInputStream(f)) ;    // 实例化数据输入流对象
        String name = null ;    // 接收名称
        float price = 0.0f ;    // 接收价格
        int num = 0 ;    // 接收数量
        char temp[] = null ;    // 接收商品名称
        int len = 0 ;    // 保存读取数据的个数
        char c = 0 ;    // 'u0000'
        try{
            while(true){
                temp = new char[200] ;    // 开辟空间
                len = 0 ;
                while((c=dis.readChar())!='	'){    // 接收内容
                    temp[len] = c ;
                    len ++ ;    // 读取长度加1
                }
                name = new String(temp,0,len) ;    // 将字符数组变为String
                price = dis.readFloat() ;    // 读取价格
                dis.readChar() ;    // 读取	
                num = dis.readInt() ;    // 读取int
                dis.readChar() ;    // 读取

                System.out.printf("名称:%s;价格:%5.2f;数量:%d
",name,price,num) ;
            }
        }catch(Exception e){}
        dis.close() ;
    }
};
import java.io.DataOutputStream ;
import java.io.File ;
import java.io.FileOutputStream ;
public class DataOutputStreamDemo{
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        DataOutputStream dos = null ;            // 声明数据输出流对象
        File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径
        dos = new DataOutputStream(new FileOutputStream(f)) ;    // 实例化数据输出流对象
        String names[] = {"衬衣","手套","围巾"} ;    // 商品名称
        float prices[] = {98.3f,30.3f,50.5f} ;        // 商品价格
        int nums[] = {3,2,1} ;    // 商品数量
        for(int i=0;i<names.length;i++){    // 循环输出
            dos.writeChars(names[i]) ;    // 写入字符串
            dos.writeChar('	') ;    // 写入分隔符
            dos.writeFloat(prices[i]) ; // 写入价格
            dos.writeChar('	') ;    // 写入分隔符
            dos.writeInt(nums[i]) ; // 写入数量
            dos.writeChar('
') ;    // 换行
        }
        dos.close() ;    // 关闭输出流
    }
};
import java.io.File ;
import java.io.SequenceInputStream ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.io.FileOutputStream ;
import java.io.OutputStream ;
public class SequenceDemo{
    public static void main(String args[]) throws Exception {    // 所有异常抛出
        InputStream is1 = null ;        // 输入流1
        InputStream is2 = null ;        // 输入流1
        OutputStream os = null ;        // 输出流
        SequenceInputStream sis = null ;    // 合并流
        is1 = new FileInputStream("d:" + File.separator + "a.txt") ;
        is2 = new FileInputStream("d:" + File.separator + "b.txt") ;
        os = new FileOutputStream("d:" + File.separator + "ab.txt") ;
        sis = new SequenceInputStream(is1,is2) ;    // 实例化合并流
        int temp = 0 ;    // 接收内容
        while((temp=sis.read())!=-1){    // 循环输出
            os.write(temp) ;    // 保存内容
        }
        sis.close() ;    // 关闭合并流
        is1.close() ;    // 关闭输入流1`
        is2.close() ;    // 关闭输入流2
        os.close() ;    // 关闭输出流
    }
};
原文地址:https://www.cnblogs.com/tszr/p/12161292.html