美文网首页小卜java
JAVA基础之java简单命令

JAVA基础之java简单命令

作者: 汤太咸啊 | 来源:发表于2021-11-12 13:28 被阅读0次

    java -cp命令
    存在两个路径,其中psdir下com/test/training/路径下有Main.class和Student.class
    另外路径,libdir下com/newtest/support/路径下有Other.class
    在mydir下执行命令

    //Windows
    java -cp \psdir;\libdir com.test.training.Main
    //Unix platforms
    java -cp /psdir:/libdir com.test.training.Main
    

    如果在psdir路径下,是training.jar包,包内com/test/training/路径下有Main.class和Student.class
    另外路径,libdir下com/newtest/support/路径下有Other.class
    在mydir下执行命令

    //Windows
    java -cp \psdir\training.jar;\libdir com.test.training.Main
    //Unix platforms
    java -cp /psdir/training.jar:/libdir com.test.training.Main
    

    mydir路径下ourapp.jar,jar包内包含Manifest文件,以及com/test/training/路径下有Main.class和Student.class,com/newtest/support/路径下有Other.class

    Manifest-Version: 1.0
    Main-Class: com.test.training.Main
    

    此时才可以执行

    java -jar ourapp.jar
    

    环境变量

    //设置变量以及取出
    Properties props = new Properties();
    props.setProperty("displayName","Bu Xuesong");
    String name = props.getProperty("displayName");
    System.out.println("name:"+name);
    String acctNum = props.getProperty("accountNumber");
    System.out.println("acctNum:"+acctNum);
    String nextPosition = props.getProperty("accountNumber","1");
    System.out.println("nextPosition:"+nextPosition);
    
    //获取系统变量
    String username = System.getProperty("user.name");
    System.out.println(username);
    String userHome = System.getProperty("user.home");
    System.out.println(userHome);
    String osArchitecture = System.getProperty("os.arch");
    System.out.println(osArchitecture);
    
    String javaVendor = System.getProperty("java.vendor");
    System.out.println(javaVendor);
    
    Map<String,String> map = System.getenv();
    for (String key:map.keySet()) {
        System.out.println("key:"+key+";value="+map.get(key));
    }
    
    String logName = System.getenv("LOGNAME");
    System.out.println(logName);
    
    

    将properties变量存入xml中

    public static void XMLtest() {
        Properties prop = new Properties();
        prop.setProperty("displayName","Xuesong Bu");
        prop.setProperty("accountNumber","1-234-567");
        try(OutputStream out = Files.newOutputStream(Paths.get("/Users/buxuesong/Documents/svn_code/demo/prop.xml"))){
            prop.storeToXML(out,"My account");
        }catch (Exception e){
            System.out.println(e.getClass().getSimpleName()+" | "+e.getMessage());
        }
    
        Properties inProp = new Properties();
        try(InputStream in = Files.newInputStream(Paths.get("/Users/buxuesong/Documents/svn_code/demo/prop.xml"))){
            inProp.loadFromXML(in);
        }catch(Exception e){
            System.out.println(e.getClass().getSimpleName()+" | "+e.getMessage());
        }
        String displayName = inProp.getProperty("displayName");
        System.out.println("displayName:"+displayName);
        String accountNumber = inProp.getProperty("accountNumber");
        System.out.println("accountNumber:"+accountNumber);
    
    }
    

    生成的xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <comment>My account</comment>
    <entry key="displayName">Xuesong Bu</entry>
    <entry key="accountNumber">1-234-567</entry>
    </properties>
     输出的日志:
    displayName:Xuesong Bu
    accountNumber:1-234-567
    

    默认Properties方式,当创建Properties的时候不必每次都去重新读区,可以通过之前的Properties构造方法来默认创建

    public static void defaultProperties() {
        Properties defaults = new Properties();
        defaults.setProperty("position","1");
        Properties props = new Properties(defaults);
    
        String nextPos = props.getProperty("position");
        int pos = Integer.parseInt(nextPos);
        System.out.println("pos:"+pos);
    
        props.setProperty("position",Integer.toString(++pos));
    
        nextPos = props.getProperty("position");
        System.out.println("nextPos:"+nextPos);
    }
    输出:
    pos:1
    nextPos:2
    

    通过读取默认的Properties以及将期存储为xml,后期可以再次取出。
    以下程序在第一次执行时从默认MyDefaultValues.xml取出内容,放入userProps中,然后再将userProps存储到文件userValues.xml中,第二次执行就可以从userValues取出上一次存储的值

    public class Main {
    
        public static void main(String[] args) {
            try{
                Properties defaultProps = new Properties();
                try(InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("MyDefaultValues.xml")){
                    defaultProps.loadFromXML(inputStream);
                }
                Properties userProps = new Properties(defaultProps);
                loadUserProps(userProps);
                String welcomeMessage = userProps.getProperty("welcomeMessage");
                String farewellMessage = userProps.getProperty("farewellMessage");
                System.out.println("welcomeMessage:"+welcomeMessage);
                System.out.println("farewellMessage:"+farewellMessage);
    
                if(userProps.getProperty("isFirstRun").equalsIgnoreCase("Y")){
                    userProps.setProperty("welcomeMessage","Welcome back");
                    userProps.setProperty("farewellMessage","Things will be familiar now");
                    userProps.setProperty("isFirstRun","N");
                    saveUserProps(userProps);
                }
    
            }catch (Exception e){
                System.out.println(e.getClass().getSimpleName()+" | "+e.getMessage());
            }
        }
        private static Properties loadUserProps(Properties userProps){
            Path userFile = Paths.get("/Users/buxuesong/Documents/svn_code/demo/userValues.xml");
            if(Files.exists(userFile)){
                try(InputStream inputStream = Files.newInputStream(userFile)){
                    userProps.loadFromXML(inputStream);
                }catch (Exception e){
                    System.out.println(e.getClass().getSimpleName()+" | "+e.getMessage());
                }
            }
            return userProps;
        }
        private static void saveUserProps(Properties userProps){
            try(OutputStream outputStream = Files.newOutputStream(Paths.get("/Users/buxuesong/Documents/svn_code/demo/userValues.xml"))){
                userProps.storeToXML(outputStream,null);
            }catch (Exception e){
                System.out.println(e.getClass().getSimpleName()+" | "+e.getMessage());
            }
        }
    }
    

    MyDefaultValues.xml内容为:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
        <entry key="isFirstRun">Y</entry>
        <entry key="welcomeMessage">111Hello newcomer</entry>
        <entry key="farewellMessage">It'll all be different soon</entry>
    </properties>
    

    第一次运行输出:

    welcomeMessage:111Hello newcomer
    farewellMessage:It'll all be different soon
    

    第二次运行输出:

    welcomeMessage:Welcome back
    farewellMessage:Things will be familiar now
    

    相关文章

      网友评论

        本文标题:JAVA基础之java简单命令

        本文链接:https://www.haomeiwen.com/subject/jlmgzltx.html