• 【Java】经典示例代码


    成鹏致远 | lcw.cnblogs.com | 2014-02-08

     单例设计模式

    class Singleton{
        private static Singleton instance = new Singleton() ;    // 在内部产生本类的实例化对象
        public static Singleton getInstance(){        // 通过静态方法取得instance对象
            return instance ;
        }
        private Singleton(){        // 将构造方法进行了封装,私有化    
        }
        public void print(){
            System.out.println("Hello World!!!") ;
        }
    };
    public class SingletonDemo05{
        public static void main(String args[]){
            Singleton s1 = null ;    // 声明对象
            Singleton s2 = null ;    // 声明对象
            Singleton s3 = null ;    // 声明对象
            s1 = Singleton.getInstance() ;    // 取得实例化对象
            s2 = Singleton.getInstance() ;    // 取得实例化对象
            s3 = Singleton.getInstance() ;    // 取得实例化对象
            s1.print() ;        // 调用方法
            s2.print() ;        // 调用方法
            s3.print() ;        // 调用方法
        }
    };
    View Code

     代理设计模式

    interface Network{
        public void browse() ;    // 浏览
    }
    class Real implements Network{
        public void browse(){
            System.out.println("上网浏览信息") ;
        }
    };
    class Proxy implements Network{
        private Network network ;    // 代理对象
        public Proxy(Network network){
            this.network = network ;
        }
        public void check(){
            System.out.println("检查用户是否合法。") ;
        }
        public void browse(){
            this.check() ;
            this.network.browse() ;    // 调用真实的主题操作
        }
    };
    public class ProxyDemo{
        public static void main(String args[]){
            Network net = null ;
            net  = new Proxy(new Real()) ;//  指定代理操作
            net.browse() ;    // 客户只关心上网浏览一个操作
        }
    };
    View Code

     动态代理设计模式(反射实现)

    import java.lang.reflect.InvocationHandler ;
    import java.lang.reflect.Proxy ;
    import java.lang.reflect.Method ;
    interface Subject{
        public String say(String name,int age) ;    // 定义抽象方法say
    }
    class RealSubject implements Subject{    // 实现接口
        public String say(String name,int age){
            return "姓名:" + name + ",年龄:" + age ;
        }
    };
    class MyInvocationHandler implements InvocationHandler{
        private Object obj ;
        public Object bind(Object obj){
            this.obj = obj ;    // 真实主题类
            return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this) ;
        }
        public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
            Object temp = method.invoke(this.obj,args) ;    // 调用方法
            return temp ;
        }
    };
    public class DynaProxyDemo{
        public static void main(String args[]){
            Subject sub = (Subject)new MyInvocationHandler().bind(new RealSubject()) ;
            String info = sub.say("成鹏致远",2) ;
            System.out.println(info) ;
        }
    };
    View Code

    工厂设计模式

    interface Fruit{    // 定义一个水果接口
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){
            System.out.println("** 吃苹果。") ;
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子。") ;
        }
    };
    class Factory{    // 定义工厂类
        public static Fruit getInstance(String className){
            Fruit f = null ;
            if("apple".equals(className)){    // 判断是否要的是苹果的子类
                f = new Apple() ;
            }
            if("orange".equals(className)){    // 判断是否要的是橘子的子类
                f = new Orange() ;
            }
            return f ;
        }
    };
    public class InterfaceCaseDemo05{
        public static void main(String args[]){
            Fruit f = Factory.getInstance(args[0]) ;    // 实例化接口
            if(f!=null){    // 判断是否取得实例
                f.eat() ;
            }
        }
    };
    View Code 

    高级工厂设计模式(反射实现)

    import java.util.Properties ;
    import java.io.File ;
    import java.io.FileOutputStream ;
    import java.io.FileInputStream ;
    interface Fruit{
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){            // 覆写eat()方法
            System.out.println("** 吃苹果");
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子") ;
        }
    };
    class Init{
        public static Properties getPro(){
            Properties pro = new Properties() ;
            File f = new File("d:\fruit.properties") ;    // 找到属性文件
            try{
                if(f.exists()){    // 文件存在
                    pro.load(new FileInputStream(f)) ;    // 读取属性
                }else{
                    pro.setProperty("apple","org.lcw.factorydemo.Apple") ;
                    pro.setProperty("orange","org.lcw.factorydemo.Orange") ;
                    pro.store(new FileOutputStream(f),"FRUIT CLASS") ;
                }
            }catch(Exception e){}
            return pro ;
        }
    };
    class Factory{
        public static Fruit getInstance(String className){
            Fruit fruit = null ;
            try{
                fruit = (Fruit)Class.forName(className).newInstance() ;
            }catch(Exception e){
                e.printStackTrace() ;
            }
            return fruit ;
        }
    };
    public class FactoryDemo{
        public static void main(String args[]){
            Properties pro = Init.getPro() ;
            Fruit f = Factory.getInstance(pro.getProperty("apple")) ;
            if(f!=null){
                f.eat() ;
            }
        }
    };
    View Code

    适配器设计模式

    interface Window{        // 定义Window接口,表示窗口操作
        public void open() ;    // 打开
        public void close() ;    // 关闭
        public void activated() ;    // 窗口活动
        public void iconified() ;    // 窗口最小化
        public void deiconified();// 窗口恢复大小
    }
    abstract class WindowAdapter implements Window{
        public void open(){} ;    // 打开
        public void close(){} ;    // 关闭
        public void activated(){} ;    // 窗口活动
        public void iconified(){} ;    // 窗口最小化
        public void deiconified(){};// 窗口恢复大小
    };
    class WindowImpl extends WindowAdapter{
        public void open(){
            System.out.println("窗口打开。") ;
        }
        public void close(){
            System.out.println("窗口关闭。") ;
        }
    };
    public class AdapterDemo{
        public static void main(String args[]){
            Window win = new WindowImpl() ;
            win.open() ;
            win.close() ;
        }
    };
    View Code

    观察者设计模式

    import java.util.* ;
    class House extends Observable{    // 表示房子可以被观察
        private float price ;// 价钱
        public House(float price){
            this.price = price ;
        }
        public float getPrice(){
            return this.price ;
        }
        public void setPrice(float price){
            // 每一次修改的时候都应该引起观察者的注意
            super.setChanged() ;    // 设置变化点
            super.notifyObservers(price) ;// 价格被改变
            this.price = price ;
        }
        public String toString(){
            return "房子价格为:" + this.price ;
        }
    }; 
    class HousePriceObserver implements Observer{
        private String name ;
        public HousePriceObserver(String name){    // 设置每一个购房者的名字
            this.name = name ;
        }
        public void update(Observable o,Object arg){
            if(arg instanceof Float){
                System.out.print(this.name + "观察到价格更改为:") ;
                System.out.println(((Float)arg).floatValue()) ;
            }
        }
    };
    public class ObserDemo01{
        public static void main(String args[]){
            House h = new House(1000000) ;
            HousePriceObserver hpo1 = new HousePriceObserver("购房者A") ;
            HousePriceObserver hpo2 = new HousePriceObserver("购房者B") ;
            HousePriceObserver hpo3 = new HousePriceObserver("购房者C") ;
            h.addObserver(hpo1) ;
            h.addObserver(hpo2) ;
            h.addObserver(hpo3) ;
            System.out.println(h) ;    // 输出房子价格
            h.setPrice(666666) ;    // 修改房子价格
            System.out.println(h) ;    // 输出房子价格
        }
    };
    View Code

    反射获取类中方法

    import java.lang.reflect.Method ;    // 导入构造方法的包
    import java.lang.reflect.Modifier ;    // 导入构造方法的包
    public class TestJava{
        public static void main(String args[]){
            Class<?> c1 = null ;        // 声明Class对象
            try{
                c1 = Class.forName("java.lang.Math") ;    // 实例化对象
            }catch(ClassNotFoundException e){
                e.printStackTrace() ;
            }
            Method m[] = c1.getMethods() ;    // 取得全部方法
            for(int i=0;i<m.length;i++){
                Class<?> r = m[i].getReturnType() ;    // 得到返回值类型
                Class<?> p[] = m[i].getParameterTypes() ;    // 取得全部参数的类型
                int xx = m[i].getModifiers() ;    // 得到修饰符
                System.out.print(Modifier.toString(xx) + " ") ;    // 输出修饰符
                System.out.print(r + " ") ;
                System.out.print(m[i].getName()) ;
                System.out.print("(") ;
                for(int j=0;j<p.length;j++){
                    System.out.print(p[j].getName() + " " + "arg" + j) ;
                    if(j<p.length-1){
                        System.out.print(",") ;
                    }
                }
                Class<?> ex[] = m[i].getExceptionTypes() ;    // 取出异常
                if(ex.length>0){
                    System.out.print(") throws ") ;
                }else{
                    System.out.print(")") ;
                }
                for(int j=0;j<ex.length;j++){
                    System.out.print(ex[j].getName()) ;
                    if(j<p.length-1){
                        System.out.print(",") ;
                    }
                }
                System.out.println() ;
            }
        }
    };
    View Code

    反射获取类中属性

    import java.lang.reflect.Field ;    // 导入构造方法的包
    import java.lang.reflect.Modifier ;    // 导入构造方法的包
    public class TestJava{
        public static void main(String args[]){
            Class<?> c1 = null ;        // 声明Class对象
            try{
                c1 = Class.forName("java.lang.Math") ;    // 实例化对象
            }catch(ClassNotFoundException e){
                e.printStackTrace() ;
            }
            {    // 本类属性
                Field f[] = c1.getDeclaredFields() ;    // 取得本类中的属性
                for(int i=0;i<f.length;i++){
                    Class<?> r = f[i].getType() ;    // 得到属性类型
                    int mo = f[i].getModifiers() ;    // 得到修饰符的数字
                    String priv = Modifier.toString(mo) ; // 还原修饰符
                    System.out.print("本类属性:") ;
                    System.out.print(priv + " ") ;    
                    System.out.print(r.getName() + " ") ;    // 得到属性类型
                    System.out.print(f[i].getName()) ;    // 输出属性名称
                    System.out.println(" ;") ;
                }
            }
            {    // 公共属性
                Field f[] = c1.getFields() ;    // 取得本类中的公共属性
                for(int i=0;i<f.length;i++){
                    Class<?> r = f[i].getType() ;    // 得到属性类型
                    int mo = f[i].getModifiers() ;    // 得到修饰符的数字
                    String priv = Modifier.toString(mo) ; // 还原修饰符
                    System.out.print("公共属性:") ;
                    System.out.print(priv + " ") ;    
                    System.out.print(r.getName() + " ") ;    // 得到属性类型
                    System.out.print(f[i].getName()) ;    // 输出属性名称
                    System.out.println(" ;") ;
                }
            }
        }
    };
    View Code

    反射修改类中属性

    import java.lang.reflect.Field ;
    public class InvokeFieldDemo{
        public static void main(String args[]) throws Exception{
            Class<?> c1 = null ;
            Object obj = null ;
            c1 = Class.forName("org.lcw.invoke.Person") ;    // 实例化Class对象
            obj = c1.newInstance() ;
            Field nameField = null ;
            Field ageField = null ;
            nameField = c1.getDeclaredField("name") ;    // 取得name属性
            ageField = c1.getDeclaredField("age") ;    // 取得name属性
            nameField.setAccessible(true) ;    // 此属性对外部可见
            ageField.setAccessible(true) ;    // 此属性对外部可见
            nameField.set(obj,"成鹏致远") ;    // 设置name属性内容
            ageField.set(obj,2) ;            // 设置age属性内容
            System.out.println("姓名:" + nameField.get(obj)) ;
            System.out.println("年龄:" + ageField.get(obj)) ;
        }
    };
    
    /*
    package org.lcw.invoke ;
    public class Person
        private String name ;
        private int age ;
        public Person(){    // 无参构造
        }
        public Person(String name,int age){
            this(name) ;
            this.age = age ;
        }
        public void setName(String name){
            this.name = name ;
        }
        public void setAge(int age){
            this.age = age ;
        }
        public String getName(){
            return this.name ;
        }
        public int getAge(){
            return this.age ;
        }
    };
    */
    View Code

    反射Setter修改类中属性

    import java.lang.reflect.Method ;
    public class InvokeSetGet{
        public static void main(String args[]){
            Class<?> c1 = null ;
            Object obj = null ;
            try{
                c1 = Class.forName("org.lcw.invoke.Person") ;    // 实例化Class对象
            }catch(Exception e){}
            try{
                obj = c1.newInstance() ;
            }catch(Exception e){}
            setter(obj,"name","成鹏致远",String.class) ;    // 调用setter方法
            setter(obj,"age",2,int.class) ;    // 调用setter方法
            System.out.print("姓名:") ;
            getter(obj,"name") ;
            System.out.print("年龄:") ;
            getter(obj,"age");
        }
        /**
            Object obj:要操作的对象
            String att:要操作的属性
            Object value:要设置的属性内容
            Class<?> type:要设置的属性类型
        */
        public static void setter(Object obj,String att,Object value,Class<?> type){
            try{
                Method met = obj.getClass().getMethod("set"+initStr(att),type) ;    // 得到setter方法
                met.invoke(obj,value) ;    // 设置setter的内容
            }catch(Exception e){
                e.printStackTrace() ;
            }
        }
        public static void getter(Object obj,String att){
            try{
                Method met = obj.getClass().getMethod("get"+initStr(att)) ;    // 得到setter方法
                System.out.println(met.invoke(obj)) ;    // 调用getter取得内容
            }catch(Exception e){
                e.printStackTrace() ;
            }
        }
        public static String initStr(String old){    // 将单词的首字母大写
            String str = old.substring(0,1).toUpperCase() + old.substring(1) ;
            return str ;
        }
    };
    
    /*
    package org.lcw.invoke ;
    public class Person
        private String name ;
        private int age ;
        public Person(){    // 无参构造
        }
        public Person(String name,int age){
            this(name) ;
            this.age = age ;
        }
        public void setName(String name){
            this.name = name ;
        }
        public void setAge(int age){
            this.age = age ;
        }
        public String getName(){
            return this.name ;
        }
        public int getAge(){
            return this.age ;
        }
    };
    */
    View Code

    经典二叉树排序算法

    class BinaryTree
    {
        class Node
        { // 声明一个节点类
            private Comparable data; // 保存具体的内容
            private Node left; // 保存左子树
            private Node right; // 保存右子树
    
            public Node(Comparable data)
            {
                this.data = data;
            }
    
            public void addNode(Node newNode)
            {
                // 确定是放在左子树还是右子树
                if (newNode.data.compareTo(this.data) < 0)
                { // 内容小,放在左子树
                    if (this.left == null)
                    {
                        this.left = newNode; // 直接将新的节点设置成左子树
                    }
                    else
                    {
                        this.left.addNode(newNode); // 继续向下判断
                    }
                }
                if (newNode.data.compareTo(this.data) >= 0)
                { // 放在右子树
                    if (this.right == null)
                    {
                        this.right = newNode; // 没有右子树则将此节点设置成右子树
                    }
                    else
                    {
                        this.right.addNode(newNode); // 继续向下判断
                    }
                }
            }
    
            public void printNode()
            { // 输出的时候采用中序遍历
                if (this.left != null)
                {
                    this.left.printNode(); // 输出左子树
                }
                System.out.print(this.data + "	");
                if (this.right != null)
                {
                    this.right.printNode();
                }
            }
        };
    
        private Node root; // 根元素
    
        public void add(Comparable data)
        { // 加入元素
            Node newNode = new Node(data); // 定义新的节点
            if (root == null)
            { // 没有根节点
                root = newNode; // 第一个元素作为根节点
            }
            else
            {
                root.addNode(newNode); // 确定是放在左子树还是放在右子树
            }
        }
    
        public void print()
        {
            this.root.printNode(); // 通过根节点输出
        }
    };
    
    public class ComparableDemo03
    {
        public static void main(String args[])
        {
            BinaryTree bt = new BinaryTree();
            bt.add(8);
            bt.add(3);
            bt.add(3);
            bt.add(10);
            bt.add(9);
            bt.add(1);
            bt.add(5);
            bt.add(5);
            System.out.println("排序之后的结果:");
            bt.print();
        }
    };
    View Code

    经典链表操作算法

    class Link{        // 链表的完成类
        class Node{    // 保存每一个节点,此处为了方便直接定义成内部类
            private String data ;    // 保存节点的内容
            private Node next ;        // 保存下一个节点
            public Node(String data){
                this.data = data ;        // 通过构造方法设置节点内容
            }
            public void add(Node newNode){        // 将节点加入到合适的位置
                if(this.next==null){            // 如果下一个节点为空,则把新节点设置在next的位置上
                    this.next = newNode ;
                }else{        // 如果不为空,则需要向下继续找next
                    this.next.add(newNode) ;
                }
            }
            public void print(){
                System.out.print(this.data + "	") ;    // 输出节点内容
                if(this.next!=null){        // 还有下一个元素,需要继续输出
                    this.next.print() ;    // 下一个节点继续调用print
                }
            }
            public boolean search(String data){    // 内部搜索的方法
                if(data.equals(this.data)){        // 判断输入的数据是否和当前节点的数据一致
                    return true ;
                }else{    // 向下继续判断
                    if(this.next!=null){    // 下一个节点如果存在,则继续查找
                        return this.next.search(data) ;    // 返回下一个的查询结果
                    }else{
                        return false ;        // 如果所有的节点都查询完之后,没有内容相等,则返回false
                    }
                }
            }
            public void delete(Node previous,String data){
                if(data.equals(this.data)){    // 找到了匹配的节点
                    previous.next = this.next ;    // 空出当前的节点
                }else{
                    if(this.next!=null){    // 还是存在下一个节点
                        this.next.delete(this,data) ;    // 继续查找
                    }
                }
            }
        };
        private Node root ;        // 链表中必然存在一个根节点
        public void addNode(String data){    // 增加节点
            Node newNode = new Node(data) ;    // 定义新的节点
            if(this.root==null){            // 没有根节点
                this.root = newNode ;    // 将第一个节点设置成根节点
            }else{        // 不是根节点,放到最后一个节点之后
                this.root.add(newNode) ;    // 通过Node自动安排此节点放的位置
            }
        }
        public void printNode(){        // 输出全部的链表内容
            if(this.root!=null){        // 如果根元素不为空
                this.root.print() ;    // 调用Node类中的输出操作
            }
        }
        public boolean contains(String name){    // 判断元素是否存在
            return this.root.search(name) ;    // 调用Node类中的查找方法
        }
        public void deleteNode(String data){        // 删除节点
            if(this.contains(data)){    // 判断节点是否存在
                // 一定要判断此元素现在是不是根元素相等的
                if(this.root.data.equals(data)){    // 内容是根节点
                    this.root = this.root.next ;    // 修改根节点,将第一个节点设置成根节点
                }else{
                    this.root.next.delete(root,data) ;    // 把下一个节点的前节点和数据一起传入进去
                }
            }
        }
    };
    public class LinkDemo02{
        public static void main(String args[]){
            Link l = new Link() ;
            l.addNode("A") ;        // 增加节点
            l.addNode("B") ;        // 增加节点
            l.addNode("C") ;        // 增加节点
            l.addNode("D") ;        // 增加节点
            l.addNode("E") ;        // 增加节点
            System.out.println("======= 删除之前 ========") ;
            l.printNode() ;
            // System.out.println(l.contains("X")) ;
            l.deleteNode("C") ;        // 删除节点
            l.deleteNode("D") ;        // 删除节点
            l.deleteNode("A") ;        // 删除节点
            System.out.println("
    ====== 删除之后 =========") ;
            l.printNode() ;
            System.out.println("
    查询节点:" + l.contains("B")) ;
        }
    };
    View Code

    经典生产者与消费者算法(多线程同步互斥)

    class Info
    { // 定义信息类
        private String name = "成鹏致远"; // 定义name属性
        private String content = "学生"; // 定义content属性
        private boolean flag = false; // 设置标志位
    
        public synchronized void set(String name, String content)
        {
            if (!flag)
            {
                try
                {
                    super.wait();
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
            this.setName(name); // 设置名称
            try
            {
                Thread.sleep(300);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            this.setContent(content); // 设置内容
            flag = false; // 改变标志位,表示可以取走
            super.notify();
        }
    
        public synchronized void get()
        {
            if (flag)
            {
                try
                {
                    super.wait();
                } catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
            try
            {
                Thread.sleep(300);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            System.out.println(this.getName() + " --> " + this.getContent());
            flag = true; // 改变标志位,表示可以生产
            super.notify();
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public void setContent(String content)
        {
            this.content = content;
        }
    
        public String getName()
        {
            return this.name;
        }
    
        public String getContent()
        {
            return this.content;
        }
    };
    
    class Producer implements Runnable
    { // 通过Runnable实现多线程
        private Info info = null; // 保存Info引用
    
        public Producer(Info info)
        {
            this.info = info;
        }
    
        public void run()
        {
            boolean flag = false; // 定义标记位
            for (int i = 0; i < 50; i++)
            {
                if (flag)
                {
                    this.info.set("个人博客", "http://lcw.cnblogs.com"); // 设置名称
                    flag = false;
                }
                else
                {
                    this.info.set("个人网站", "http://infodown.tap.cn"); // 设置名称
                    flag = true;
                }
            }
        }
    };
    
    class Consumer implements Runnable
    {
        private Info info = null;
    
        public Consumer(Info info)
        {
            this.info = info;
        }
    
        public void run()
        {
            for (int i = 0; i < 50; i++)
            {
                this.info.get();
            }
        }
    };
    
    public class Test_Format
    {
        public static void main(String args[])
        {
            Info info = new Info(); // 实例化Info对象
            Producer pro = new Producer(info); // 生产者
            Consumer con = new Consumer(info); // 消费者
            new Thread(pro).start();
            new Thread(con).start();
        }
    };
    View Code

    String对正则表达式的支持

    import java.util.regex.Pattern ;
    import java.util.regex.Matcher ;
    public class RegexDemo06{
        public static void main(String args[]){
            String str1 = "A1B22C333D4444E55555F".replaceAll("\d+","_") ;
            boolean temp = "1983-07-27".matches("\d{4}-\d{2}-\d{2}") ;
            String s[] = "A1B22C333D4444E55555F".split("\d+") ;
            System.out.println("字符串替换操作:" + str1) ;
            System.out.println("字符串验证:" + temp) ;
            System.out.print("字符串的拆分:") ;
            for(int x=0;x<s.length;x++){
                System.out.print(s[x] + "	") ;
            }
        }
    };
    View Code

    代码块说明

    class Demo{
        {    // 直接在类中编写代码块,称为构造块
            System.out.println("1、构造块。") ;
        }
        static{    // 使用static,称为静态代码块
            System.out.println("0、静态代码块") ;
        }
        public Demo(){    // 定义构造方法
            System.out.println("2、构造方法。") ;
        }
    };
    public class CodeDemo03{
        static{        // 在主方法所在的类中定义静态块
            System.out.println("在主方法所在类中定义的代码块") ;
        }
        public static void main(String args[]){
            new Demo() ;        // 实例化对象
            new Demo() ;        // 实例化对象
            new Demo() ;        // 实例化对象
        }
    };
    View Code

    取得当前时间最简便算法

    import java.util.*; // 导入需要的工具包
    import java.text.*; // 导入SimpleDateFormat所在的包
    
    class DateTime
    { // 以后直接通过此类就可以取得日期时间
        private SimpleDateFormat sdf = null; // 声明SimpleDateFormat对象
    
        public String getDate()
        { // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS
            this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
            return this.sdf.format(new Date());// 将当前日期进行格式化操作
        }
    
        public String getDateComplete()
        { // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒
            this.sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒");
            return this.sdf.format(new Date());// 将当前日期进行格式化操作
        }
    
        public String getTimeStamp()
        { // 得到的是一个时间戳
            this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            return this.sdf.format(new Date());// 将当前日期进行格式化操作
        }
    };
    
    public class DateDemo07
    {
        public static void main(String args[])
        {
            DateTime dt = new DateTime();
            System.out.println("系统日期:" + dt.getDate());
            System.out.println("中文日期:" + dt.getDateComplete());
            System.out.println("时间戳:" + dt.getTimeStamp());
        }
    };
    View Code

    字节流文件拷贝算法

    import java.io.* ;
    public class Copy{
        public static void main(String args[]){
            if(args.length!=2){        // 判断是否是两个参数
                System.out.println("输入的参数不正确。") ;
                System.out.println("例:java Copy 源文件路径 目标文件路径") ;
                System.exit(1) ;    // 系统退出
            }
            File f1 = new File(args[0]) ;    // 源文件的File对象
            File f2 = new File(args[1]) ;    // 目标文件的File对象
            if(!f1.exists()){
                System.out.println("源文件不存在!") ;
                System.exit(1) ;
            }
            InputStream input = null ;        // 准备好输入流对象,读取源文件
            OutputStream out = null ;        // 准备好输出流对象,写入目标文件
            try{
                input = new FileInputStream(f1) ;
            }catch(FileNotFoundException e){
                e.printStackTrace() ;
            }
            try{
                out = new FileOutputStream(f2) ;
            }catch(FileNotFoundException e){
                e.printStackTrace() ;
            }
            if(input!=null && out!=null){    // 判断输入或输出是否准备好
                int temp = 0 ;    
                try{
                    while((temp=input.read())!=-1){    // 开始拷贝
                        out.write(temp) ;    // 边读边写
                    }
                    System.out.println("拷贝完成!") ;
                }catch(IOException e){
                    e.printStackTrace() ;
                    System.out.println("拷贝失败!") ;
                }
                try{
                    input.close() ;        // 关闭
                    out.close() ;        // 关闭
                }catch(IOException e){
                    e.printStackTrace() ;
                }
            }
        }    
    }
    View Code

    菜单选择类设计方法

    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("请选择正确的操作!") ;
                }
            }
        }
    };
    View Code

    列出指定目录所有文件方法

    import java.io.File ;
    import java.io.IOException ;
    public class FileDemo11{
        public static void main(String args[]){
            File my = new File("d:" + File.separator) ;    // 操作路径
            print(my) ;
        }
        public static void print(File file){    // 递归调用
            if(file!=null){    // 判断对象是否为空
                if(file.isDirectory()){    // 如果是目录
                    File f[] = file.listFiles() ;    // 列出全部的文件
                    if(f!=null){    // 判断此目录能否列出
                        for(int i=0;i<f.length;i++){
                            print(f[i]) ;    // 因为给的路径有可能是目录,所以,继续判断
                        }
                    }
                }else{
                    System.out.println(file) ;    // 输出路径
                }
            }
        }
    };
    View Code
  • 相关阅读:
    092、部署Graylog日志系统(2019-05-16 周四)
    091、万能的数据收集器 Fluentd (2019-05-15 周三)
    090、ELK完成部署和使用 (2019-05-13 周二)
    在CentOS7上无人值守安装Zabbix4.2
    089、初探ELK (2019-05-13 周一)
    34、Scrapy 知识总结
    33、豆瓣图书短评
    32、出任爬虫公司CEO(爬取职友网招聘信息)
    31、当当图书榜单爬虫
    30、吃什么不会胖
  • 原文地址:https://www.cnblogs.com/lcw/p/3540998.html
Copyright © 2020-2023  润新知