zoukankan      html  css  js  c++  java
  • Java阶段性测试--第四五六大题参考代码

    第四题:.此题要求用IO流完成

    1. 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt 。

    代码:

    package Test3;
    
    import java.io.File;
    import java.io.IOException;
    
    public class Test1 {
        public static void main(String[] args) {
            File file=new File("D:\myFiles");
            if(!file.exists()){
                file.mkdirs();
            }
            for (int i = 1; i <= 3; i++) {
                File file2=new File(file,"info"+i+".txt");
                try {
                    file2.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
            File[] files=file.listFiles();
            for (File file2 : files) {
                System.out.println(file2);
            }
    
        }
    }
    

    2.向info1.txt, info2.txt, info3.txt 中分别追加内容“第一个文件内容,千锋欢迎你”,“第二个文件内容,中国移动培训专家”,“第三个文件内容,千锋助你高薪就业”。


    代码:

    package Test3;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Test2 {
        public static void main(String[] args) {
            File file=new File("D:\myFiles");
            File[] files=file.listFiles();
    
            String[] strings={"第一个文件内容,千锋欢迎你","第二个文件内容,中国移动培训专家","第三个文件内容,千锋助你高薪就业"};
            FileOutputStream fos=null;
            for(int i=0;i<files.length;i++){
                try {
                    fos=new FileOutputStream(files[i]);
                    fos.write(strings[i].getBytes());
                    fos.flush();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    if(fos!=null){
                        try {
                            fos.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
    
            }
    
        }
    }
    

    3.把info1.txt , info2.txt,info3.txt 用String类中的方法截取到 文件名字,不包括拓展名,将名字变成大写,并且给文件重命名成为 INFO1.txt,INFO2.txt ,INFO3.txt,并复制到myFiles xt目录下(须用程序创建txt文件夹)


    代码:

    package Test3;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Test3 {
        public static void main(String[] args) {
            File file=new File("D:\myFiles");
            String[] strings=file.list();
    
            File file2=new File("D:\myFiles\txt");
            if(!file2.exists()){
                file2.mkdirs();
            }   
    
            for (String string : strings) {
                if(string.endsWith(".txt")){
                    //获取文件名
                    String string2=string.substring(0, 5);
                    //重命名
                    File file3=new File(file,string);
                    file3.renameTo(new File(file,string2.toUpperCase()+".txt"));
                    //复制新文件到txt文件夹下
                    FileInputStream fis=null;
                    FileOutputStream fos=null;
                    try {
                        fis=new FileInputStream(file3);
                        fos=new FileOutputStream(new File(file2,string2.toUpperCase()+".txt"));
                        byte[] bs=new byte[50];
                        int count=0;
                        while((count=fis.read(bs))!=-1){
                            fos.write(bs, 0, count);
                            fos.flush();
                        }
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }finally {
                        if(fis!=null){
                            try {
                                fis.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                        if(fos!=null){
                            try {
                                fos.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    }
    

    4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件


    代码:

    package Test3;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Scanner;
    
    
    //4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件(8分) 
    public class Test4 {
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            System.out.println("请输入关键字:");
            String string=scanner.next();
    
            //读取每个文件内容进行匹配
            File file=new File("D:\myFiles");
            FileInputStream fis=null;
            File[] files=file.listFiles();
            //遍历myFiles下的文件
            for (File file2 : files) {
                if(file2.isFile()){
    //              System.out.println(file2);
                    try {
                        fis=new FileInputStream(file2);
                        byte[] bs=new byte[50];
                        int count=0;
                        //字符串用于存储文件所有内容
                        String string2="";
                        while((count=fis.read(bs))!=-1){
                            string2+=new String(bs, 0, count);
                        }
    //                  System.out.println(string2);
                        //进行匹配
                        if(string2.contains(string)){
                            System.out.println(file2+"  包含关键字:"+string);
                        }
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }finally {
                        if(fis!=null){
                            try {
                                fis.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }
                }
    
            }
            scanner.close();
    
        }
    }
    

    5.递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt 删除成功(失败) 2015-8-10 10:20:30”.将文件保存到D:log.txt中,(注意:log.txt文件不要提交)

    代码:

    package Test3;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    
    
    /**
     * 递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt  删除成功(失败)  
     * 2015-8-10 10:20:30”.将文件保存到D:log.txt中,(注意:log.txt文件不要提交)
     * @author Administrator
     *
     */
    public class Test5 {
        public static void main(String[] args) {
            File file=new File("D:\myFiles");
            //创建log.txt
    
            File file2=new File("D:\log.txt");
            if(!file2.exists()){
                try {
                    file2.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
            //调用递归删除
            remove(file, file2);
    
        }
    
        //递归删除myfile文件
        public static void remove(File file,File txt){
            if(file.isFile()){
                boolean isSuccess=file.delete();
                long l=System.currentTimeMillis();
                //时间格式化
                SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String string=format.format(l);
                FileOutputStream fos=null;
                try {
                    fos=new FileOutputStream(txt,true);
                    String pk=isSuccess?"删除成功":"删除失败";
                    String string2=file.getName()+pk+" "+string;
                    System.out.println(string2);
                    fos.write(string2.getBytes());
                    fos.flush();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    if(fos!=null){
                        try {
                            fos.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }else {
                File[] files=file.listFiles();
                for (File file2 : files) {
                    remove(file2,txt);
                }
            }
        }
    }
    

    第五题.按要求完成如下功能


    【1】创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、star_Info(明星信息);封要求所有属性封装,重写toString方法。 (4分)


    代码:
    Star类

    package Test4;
    
    import java.io.Serializable;
    import java.text.CollationKey;
    import java.text.Collator;
    
    /**
     * 创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、
     * star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、
     * star_Info(明星信息);封要求所有属性封装,重写toString方法。
     * @author Administrator
     *
     */
    public class Star implements Comparable<Star>,Serializable {
        private static final long serialVersionUID = 1L;
    
        private int star_No;
        private String star_Name;
        private String star_Masterpieces;
        private String star_Home;
        private String star_Marriage;
        private String star_Info;
        public int getStar_No() {
            return star_No;
        }
        public void setStar_No(int star_No) {
            this.star_No = star_No;
        }
        public String getStar_Name() {
            return star_Name;
        }
        public void setStar_Name(String star_Name) {
            this.star_Name = star_Name;
        }
        public String getStar_Masterpieces() {
            return star_Masterpieces;
        }
        public void setStar_Masterpieces(String star_Masterpieces) {
            this.star_Masterpieces = star_Masterpieces;
        }
        public String getStar_Home() {
            return star_Home;
        }
        public void setStar_Home(String star_Home) {
            this.star_Home = star_Home;
        }
        public String getStar_Marriage() {
            return star_Marriage;
        }
        public void setStar_Marriage(String star_Marriage) {
            this.star_Marriage = star_Marriage;
        }
        public String getStar_Info() {
            return star_Info;
        }
        public void setStar_Info(String star_Info) {
            this.star_Info = star_Info;
        }
        @Override
        public String toString() {
            return "Star [star_No=" + star_No + ", star_Name=" + star_Name + ", star_Masterpieces=" + star_Masterpieces
                    + ", star_Home=" + star_Home + ", star_Marriage=" + star_Marriage + ", star_Info=" + star_Info + "]";
        }
        public Star(int star_No, String star_Name, String star_Masterpieces, String star_Home, String star_Marriage,
                String star_Info) {
            super();
            this.star_No = star_No;
            this.star_Name = star_Name;
            this.star_Masterpieces = star_Masterpieces;
            this.star_Home = star_Home;
            this.star_Marriage = star_Marriage;
            this.star_Info = star_Info;
        }
        public Star() {
            super();
        }
    
        //要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
        @Override
        public int compareTo(Star o) {
            if(this.star_No>o.star_No){
                return 1;
            }else if(this.star_No<o.star_No){
                return -1;
            }else {
                CollationKey key=Collator.getInstance().getCollationKey(this.star_Name);
                CollationKey key2=Collator.getInstance().getCollationKey(o.star_Name);
                int num=key.compareTo(key2);
                if(num>0){
                    return -1;
                }else if(num<0){
                    return 1;
                }else {
                    return 0;
                }
            }
        }
    //  (要求:明星编号和明星姓名和明星成名作相同的为同一明星)
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((star_Home == null) ? 0 : star_Home.hashCode());
            result = prime * result + ((star_Info == null) ? 0 : star_Info.hashCode());
            result = prime * result + ((star_Marriage == null) ? 0 : star_Marriage.hashCode());
            result = prime * result + ((star_Masterpieces == null) ? 0 : star_Masterpieces.hashCode());
            result = prime * result + ((star_Name == null) ? 0 : star_Name.hashCode());
            result = prime * result + star_No;
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if(obj==null){
                return false;
            }
            if(obj==this){
                return true;
            }
            if(obj instanceof Star){
                Star star=(Star) obj;
                if(this.star_No==star.star_No&&this.star_Name.equals(star.star_Name)&&
                        this.star_Masterpieces.equals(star.star_Masterpieces)){
                    return true;
                }
            }
            return false;
        }
    
    
    
    }
    

    【2】 根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。
    (1)star_No:10000001 star_Name:胡军 star_Masterpieces:天龙八部 star_Marriage:true star_Home:北京市Star_Info:胡军出生在北京的一个艺术世家,属于满族镶黄旗。父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。

    (2)star_No:10000002 star_Name:鹿晗 star_Masterpieces:重返20岁star_Marriage:false star_Home:北京市Star_Info:鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。
    (3)star_No:10000011 star_Name:孙俪 star_Masterpieces:后宫甄嬛传star_Marriage:true star_Home:上海市 Star_Info:孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。
    (4)star_No:10000101 star_Name:王宝强 star_Masterpieces:天下无贼 star_Marriage:true star_Home:河北省邢台市南和县Star_Info:王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。


    【3】创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,使用自然排序进行排序,
    要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序(5分)
    

    【4】使用HashMap<Star,String>集合进行存储,将Star对象作为键,value值为与该明星有关的作品名。
    并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)。(5分)
    

    【5】 要求在上题遍历集合时,要求编程实现在当前项目中,
    根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存
    

    后面4小问的参考代码如下:

    代码:

    package Test4;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class Test1 {
        public static void main(String[] args) {
    
            //2根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。
            Star star=new Star(10000001, "胡军", "天龙八部", "北京市", "true", "胡军出生在北京的一个艺术世家,属于满族镶黄旗。"
                    + "父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。");
            Star star2=new Star(10000002, "鹿晗", "重返20岁", "北京市", "false", 
                    "鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。");
            Star star3=new Star(10000011, "孙俪", "后宫甄嬛传", "上海市", "true",
                    "孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。");
            Star star4=new Star(10000101, "王宝强", "天下无贼", "河北省邢台市南和县", "true",
                    "王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。");
    
    
            //3.创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,
            //使用自然排序进行排序,要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
            //{自然排序处理见Star类}
            TreeMap<Star, String> map=new TreeMap<>();
            map.put(star, "实力派老演员");
            map.put(star2, "偶像派歌手演员");
            map.put(star3, "后宫剧大神");
            map.put(star4, "草根演员");
            Set<Star> set=map.keySet();
            for (Star star5 : set) {
                System.out.println(star5+" "+map.get(star5));
            }
    
    
            //4.使用HashMap<Star,String>集合进行存储,将Star对象作为键,vlaue值为与该明星有关的作品名。
            //并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)
            //{对hashCode和equals重写见star类}
            HashMap<Star, String> map2=new HashMap<>();
            map2.put(star, "潜伏");
            map2.put(star2, "不知道");
            map2.put(star3, "甄嬛传");
            map2.put(star4, "士兵突击");
    
            System.out.println();
    
            //5.要求在上题遍历集合时,要求编程实现在当前项目中,
            //根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存
            ObjectOutputStream oos=null;
            Set<Star> set2=map.keySet();
            for (Star star6 : set2) {
                //遍历输出
                System.out.println(star6+" "+map.get(star6));
    
                //创建相应的文件,并写入序列化对象
                try {
                    oos=new ObjectOutputStream(new FileOutputStream(new File(star6.getStar_Name()+".txt")));
                    oos.writeObject(star6);
                    oos.flush();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {
                    if(oos!=null){
                        try {
                            oos.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }
    
        }
    }
    

    第六大题

    写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。
    注:分别给两个对象构造一个对象o,数字每打印两个或字母每打印一个就执行o.wait()。在o.wait()之前不要忘了写o.notify()


    参考代码地址:http://blog.csdn.net/baidu_37107022/article/details/71082940

  • 相关阅读:
    关于报错”已有打开的于此Command相关联的DataReader,必须首先将它关闭。“的问题
    Dockerjenkins环境搭建跟配置
    Python+selenium 【第十章】封装config类,读取配置文件,封装驱动类,适配windows/mac
    —— “欢迎来到我的小屋”
    Python+selenium 【第九章】封装excel类,封装test_data类 读取测试元素信息
    Linux搭建docker
    Python+selenium 【第十二章】封装日志类优化其他方法并添加日志(异常处理)
    【selenium】Python自动化面试题
    Dockerjenkins容器安装python并配置环境变量
    【优化框架】新增期望结果,断言为mysql情况下动态化参数替换
  • 原文地址:https://www.cnblogs.com/TCB-Java/p/6809625.html
Copyright © 2011-2022 走看看