zoukankan      html  css  js  c++  java
  • 疯狂Java学习笔记(022)

    做几个练习题:

    1.设计程序实现将一个路径下的所有.jpg图片复制到c:/jpgs目录下. (注意同名文件的处理!!!)

    package com.test;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    
    /*
     * 设计程序实现将一个路径下的所有.jpg图片复制到c:/jpgs目录下.
        (注意同名文件的处理!!!)
     */
    public class CopyJpgDemo {
    
        public static void main(String[] args) throws Exception {
            File src = new File("c:/srcDir");
            File destDir = new File("c:/demosFolder");
            copy(src,destDir);
    
        }
        
        public static void copy(File dir,File destDir) throws Exception{
            File[] files = dir.listFiles();
            for (File file : files) {
                if(file.isFile() && file.getName().toLowerCase().endsWith(".jpg")){
                    //c:srcDirdog.jpg
                    System.out.println(file.getAbsolutePath().replaceAll("[\:]", "_"));
    //                File newFile = new File(destDir, file.getAbsolutePath().replaceAll("[\:]", "_"));
                    //
    //                FileUtils.copyFile(file, newFile);
                }else if(file.isDirectory()){
    //                copy(file,destDir);
                }
            }
        }
        
    
    }

     2.自定义方法实现:查找指定路径下的所有大于2M的文本文件.显示其基本信息.

    package com.test;
    
    import java.io.File;
    
    /*
     * 自定义方法实现:查找指定路径下的所有大于2M的文本文件.显示其基本信息.
     */
    public class FindDemo1 {
    
        public static void main(String[] args) {
            File src = new File("c:/srcDir");
            find(src);
        }
    
        public static void find(File dir){
            File[] files = dir.listFiles();
            if(files != null){
                for (File file : files) {
                    if(file.isFile() && file.getName().toLowerCase().endsWith(".txt") && file.length() > 1024 * 1024 * 2){
                        System.out.println(file.getAbsolutePath()+" : "+file.length()/1024/1024 + " MB");
                    }else{ //递归调用
                        find(file);
                    }
                }
            }
            
        }
        
        
    }

    3.自定义方法实现:查找指定路径下的所有文件名中包含"java"字样的文件 * (注意不是以.java为后缀的文件,而是文件名中包含java字样),并把文件列表保存在c:java_file_list.txt中.

    package com.test;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    
    /*
     * 自定义方法实现:查找指定路径下的所有文件名中包含"java"字样的文件
     * (注意不是以.java为后缀的文件,而是文件名中包含java字样),并把文件列表保存在c:java_file_list.txt中.
     */
    public class FindDemo2 {
    
        public static void main(String[] args) throws Exception {
            File src = new File("c:/srcDir");
            File file = new File("c:/java_file_list.txt");
            find(src,file);
    
        }
        
        public static void find(File dir,File dest) throws Exception{
            File[] files = dir.listFiles();
            for (File file : files) {
                if(file.isFile()){
                    String name = file.getName();
                    //把文件名中的后缀去掉
                    name = name.substring(0, name.lastIndexOf("."));
                    if(name.contains("java")){
                        BufferedWriter bw = new BufferedWriter(new FileWriter(dest,true));
                        bw.write(file.getAbsolutePath());
                        bw.newLine();
                        bw.close();
                    }
                }else{
                    find(file,dest);
                }
            }
        }
        
    
    }

    4.设计程序实现从一个包含5个人名(一个名字占一行)的文本文件中随机获取两个不同的人名字!

    package com.test;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.util.ArrayList;
    
    /*
     * 设计程序实现从一个包含5个人名(一个名字占一行)的文本文件中随机获取两个不同的人名字!
     */
    public class GetRandomNameDemo {
    
        public static void main(String[] args) throws Exception {
            ArrayList<String> list = new ArrayList<String>();
            BufferedReader br = new BufferedReader(new FileReader("name.txt"));
            String name = null;
            while((name = br.readLine()) != null){
                list.add(name);
            }
            br.close();
            
            //随机产生两个不同的数
            int r1 = (int)(Math.random() * list.size());
            int r2 = (int)(Math.random() * list.size());
            while(r2 == r1){
                r2 = (int)(Math.random() * list.size());
            }
            
            System.out.println(list.get(r1) +" - "+ list.get(r2));
        }
    
    }

    5.统计网站访问次数最多的前三名 * * 10.0.0.1 www.youku.com 200

    package com.test;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.util.Comparator;
    import java.util.TreeMap;
    import java.util.TreeSet;
    
    /*
     * 统计网站访问次数最多的前三名
     * 
     * 10.0.0.1 www.youku.com 200
     * 
     */
    public class LogCountDemo {
    
        public static void main(String[] args) throws Exception {
            //读取日志
            BufferedReader br = new BufferedReader(new FileReader("c:/test_log.txt"));
            
            //创建集合,用于存放网站和次数
            TreeMap<String, Integer> map = new TreeMap<String,Integer>();
            
            //切出网址,统计次数
            String line = null;
            while((line = br.readLine()) != null){
                //
                String site = line.split(" ")[1];
                //添加到集合:第一次出现:<site,1>,否则:<site,旧值+1>
                if(!map.containsKey(site)){
                    map.put(site, 1);
                }else{
                    map.put(site, map.get(site) + 1);
                }
            }
            br.close();
            
            //创建新集合.
            TreeSet<String> set = new TreeSet<String>(new Comparator<String>() {
                
                //www.baidu.com_5
                @Override
                public int compare(String o1, String o2) {
                    int n1 = Integer.parseInt(o1.split("_")[1]);
                    int n2 = Integer.parseInt(o2.split("_")[1]);
                    
                    String site1 = o1.split("_")[0];
                    String site2 = o2.split("_")[0];
                    
                    //主要条件
                    int r1 = n2 - n1;
                    //
                    int r2 = r1 == 0?site1.compareTo(site2):r1;
                    return r2;
                }
            });
            
            //遍历map,将元素放到新集合中
            for(String site : map.keySet()){
                set.add((site) + "_" + map.get(site));
            }
            
            //写出到文件
            BufferedWriter bw = new BufferedWriter(new FileWriter("count.txt"));
            int x = 0;
            for (String string : set) {
                String[] split = string.split("_");
                bw.write(split[1] + " "+ split[0]);
                bw.newLine();
                x++;
                if(x >= 3){
                    break;
                }
            }
            bw.close();
            
    
        }
    
    }

    6.自定义类,使用LinkedList模拟栈结构. 提供如下功能: (1)压栈 (2)弹栈 (3)遍历 (4)清空

    package com.test;
    /*
     * 1.自定义类,使用LinkedList模拟栈结构.
        提供如下功能:
        (1)压栈
        (2)弹栈
        (3)遍历
        (4)清空
     */
    
    import java.util.Iterator;
    import java.util.LinkedList;
    
    class MyStack<E>{
        
        //在成员位置保持一个LinkedList对象,功能都是它实现的!!
        LinkedList<E> list = new LinkedList<E>();
        
        //压栈
        public void push(E e){
            //在末尾添加元素
            list.add(e);
        }
        
        //弹栈
        public E pop(){
            return list.removeLast();
        }
        
        //迭代器
        public Iterator<E> iterator(){
            return list.iterator();
        }
        
        //清空
        public void clear(){
            list.clear();
        }
        
        //获取大小
        public int size(){
            return list.size();
        }
        
    }
    
    
    
    public class MyStackDemo {
    
        public static void main(String[] args) {
            //测试自定义栈
            MyStack<String> ms = new MyStack<String>();
            //
            ms.push("abc");
            ms.push("java");
            ms.push("mysql");
    
            /*
            //
            System.out.println(ms.size());
            
            //循环弹栈
            while(ms.size() > 0){
                System.out.println(ms.pop());
            }
            */
            
            /*
            //迭代器
            Iterator<String> it = ms.iterator();
            while(it.hasNext()){
                System.out.println(it.next());
            }
            */
            
            //清空
            ms.clear();
            System.out.println(ms.size());
            
        }
    
    }
  • 相关阅读:
    面向对象(OOP:Objdec Oriented Programming)
    vue中v-model和v-bind区别
    DateTimeFormat
    html中frameset简介
    学习及资料地址
    mybatis+oracle批量新增带序列List对象
    Io流读取并输出文件(例如.mp3格式文件)
    Java从服务器下载图片保存到本地
    转:Java DecimalFormat的主要功能及使用方法
    数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)
  • 原文地址:https://www.cnblogs.com/akinodoo/p/10050591.html
Copyright © 2011-2022 走看看