Java段階性テスト--第四五六大題参考コード

34435 ワード

第四題:.この問題はIOストリームで完成することを要求する
  • Fileクラスを使用してDディスクの下にディレクトリmyFilesを作成し、myFilesディレクトリの下にinfo 1の3つのファイルを作成します.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.info 1.txt, info2.txt, info3.txtにはそれぞれ「最初のファイルの内容、千鋒はあなたを歓迎します」、「第2のファイルの内容、中国移動訓練専門家」、「第3のファイルの内容、千鋒はあなたの高給の就職を助けます」という内容が追加されています.
    コード:
    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;itry {
                    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.info 1.txt , info2.txt,info3.txtはStringクラスのメソッドでファイル名を切り取り、拡張名を除く名前を大文字にし、ファイル名をINFO 1に変更する.txt,INFO2.txt ,INFO3.txt、myFilestxtディレクトリにコピーします(プログラムで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ディレクトリを再帰的に削除し、削除情報を記録する.形式は「INFO 1.txt削除成功(失敗)2015-8-10 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_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,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_Noreturn -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】以下に示す情報に基づいてスターオブジェクトを作成し、各文字列のフィールドに対応する値をオブジェクト属性に設定する.(1)star_No:1000001 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_No        ,    start_Name     (5 )
    
    【4】  HashMap      , 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_No        ,    start_Name     
            //{       Star }
            TreeMap map=new TreeMap<>();
            map.put(star, "      ");
            map.put(star2, "       ");
            map.put(star3, "     ");
            map.put(star4, "    ");
            Set set=map.keySet();
            for (Star star5 : set) {
                System.out.println(star5+" "+map.get(star5));
            }
    
    
            //4.  HashMap      , Star     ,vlaue            。
            //         (  :                       )
            //{ hashCode equals   star }
            HashMap 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 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();
                        }
                    }
                }
            }
    
        }
    }
    

    6番目の問題
    2つのスレッドを書き、1つのスレッドは1-52を印刷し、もう1つのスレッドはアルファベットA-Zを承諾します.印刷順序は12 A 34 B 56 C……5152 Zです.スレッド間の通信を使用して関係を調整します.注意:2つのオブジェクトにそれぞれ1つのオブジェクトoを構築し、数字は2つまたはアルファベットを印刷するたびにo.wait()を実行します.o.wait()の前にo.notify()を書くのを忘れないでください.
    参照コードアドレス:http://blog.csdn.net/baidu_37107022/article/details/71082940
    転載先:https://www.cnblogs.com/TCB-Java/p/6809625.html