java io流练习题

1. 从键盘输入字符串,要求将读取到的  整行字符串 转成大写输出然后,继续进行输入操作   直到当输入 "e",或者 "exit",退出程序。

 

使用 Scanner

 

代码:      这里只是e/E退出

   public static void main(String[] args) {
         
        boolean flag  = true;      // 判断值

         //  while  循环   没有进入if 判断的话 就一直从键盘输入:s1.next();
        while(flag ==true) {          

             flag=true;

            Scanner s1 = new Scanner(System.in);   //实例化   Scanner 对象

            System.out.println("请输入字符串,按回车结束:");
            
        String  a   =   s1.next().toUpperCase(Locale.ROOT);  //  转化 为 大写;

        System.out.println(a);

             if("E".equals(a) ){   
                  System.out.println("进入判断:");
                 flag = false;  

             }
        }
    }

 

效果图:

 

使用 io流方法:

代码:

public static void main(String[] args) {


        BufferedReader br = null;
        InputStreamReader isr = null;

        try {
            // System.in   -----> BufferedReader    readerLine
            //   字节流  -->   字符流  --->  缓冲流

            isr = new InputStreamReader(System.in); //参数一: System.in 输入的字节流 转化为字符流

            br = new BufferedReader(isr);   // 把字符流 放进缓冲流中,操作br就是在操作isr
            while (true) {

                System.out.println("请输入字符串:");

                String data = br.readLine();  //br 里面有这个方法
                
                //data 为 拿到的 一行输入的字符串的值
                
                if (data.equalsIgnoreCase("e") || data.equalsIgnoreCase("exit")) {
                    System.out.println("程序 结束:");
                    break;
                }
                
                String upperCase = data.toUpperCase(Locale.ROOT);

                System.out.println(upperCase);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

效果:

 

 

2.拷贝一张图片,到另外一个目录下。

代码:

FileInputStream fr= null;
        FileOutputStream fo = null;

        try{

            // 1. 造文件

            File  srcFile  = new File("C:\\Users\\w6666\\IdeaProjects\\java学习\\src\\1.jpeg");//路径

            //再 一个目标文件对象并给上目标 路径

            File  destFile  = new File("C:\\Users\\w6666\\IdeaProjects\\java学习\\src\\copy.jpeg");



            // 2. 造流
            //  思考  复制文件需要什么流   文件输入流,或者文件输出流
            //  应该是字节流


            //  文件字节输入流
              fr  = new FileInputStream(srcFile);

            // 文件 字节输出流  (应该就是 fr 把srcFile文件 输入到程序里,程序再用fo 输出流,把数据【文件】 输出到磁盘 )
              fo = new FileOutputStream(destFile);



            //  3. 复制的过程


            //3.1 创建一个字节数组:
          //  Byte[] buffer  = new Byte[5];    注意是小写:

            byte[] buffer  = new byte[5];


            // 记录 每次 读入到 buffer 数组中字符的个数.
            int  len;

            //  输入流  (把磁盘的数据/字符 读入到 buffer数组中共  - -磁盘 到程序 ) 读的值赋值给len
            //  判断  len 的值  是否 等于 -1

            while(  (len = fr.read(buffer)) !=-1   ){

                // 不等于 -1 的话,
                //  输出流  就从 程序 中,把 buffer 的字符 输出到磁盘出来,每次输出 len个字符:

                fo.write(buffer ,0,len);
                
                //提示 语句:
                System.out.println("正在输出....");
            }
            System.out.println("***********输出成功************");

        }catch(Exception e){
            e.printStackTrace();
        } finally {

            // 关闭流

            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fo.close();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

 

 效果:

 

 

 

 

3.  图片加密

代码:


            byte[] buffer  = new byte[20];
            int len;   // int len; ???

            while( (len = fis.read(buffer)) !=-1 ){


                // 正确的:
                //    加密  :???
                for( int i=0;i<len;i++){
                    buffer[i] =(byte)(buffer[i] ^ 5);
                }

                fos.write(buffer,0,len);
            }

        }catch(Exception e){
            e.printStackTrace();
        } finally {

            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

 

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值