zoukankan      html  css  js  c++  java
  • jar 在服务器后台执行指定文件的main方法,并且日志写入到指定文件

    package my.scan;
    
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Hello world!
     */
    public class App {
        public static void main(String[] args) throws IOException {
    
            String file = args[0];
    
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    new FileInputStream(file), "utf-8"));
    
            String line = "";
            List<String> listData1 = new ArrayList<>();
            List<String> listData2 = new ArrayList<>();
            List<String> listData3 = new ArrayList<>();
            List<String> listData4 = new ArrayList<>();
            int index = 0;
            while ((line = reader.readLine()) != null) {
                if (null == line || line.equals("")) {
                    continue;
                }
                line = line.replaceAll(" ", "");
                if (line.equals("")) {
                    continue;
                }
    
                if (index % 4 == 0) {
                    listData1.add(line);
                    index++;
                    continue;
                }
                if (index % 4 == 1) {
                    listData2.add(line);
                    index++;
                    continue;
                }
                if (index % 4 == 2) {
                    listData3.add(line);
                    index++;
                    continue;
                }
                if (index % 4 == 3) {
                    listData4.add(line);
                    index++;
                    continue;
                }
            }
    
            System.out.println("listData1:" + listData1.size());
            System.out.println("listData2:" + listData2.size());
            System.out.println("listData3:" + listData3.size());
            System.out.println("listData4:" + listData4.size());
    
            ReadThread readThread1 = new ReadThread();
            readThread1.setListData(listData1);
            readThread1.start();
    
            ReadThread readThread2 = new ReadThread();
            readThread2.setListData(listData2);
            readThread2.start();
    
            ReadThread readThread3 = new ReadThread();
            readThread3.setListData(listData3);
            readThread3.start();
    
            ReadThread readThread4 = new ReadThread();
            readThread4.setListData(listData4);
            readThread4.start();
        }
    }
    

      

    package my.scan;
    
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    import java.util.List;
    
    /**
     * @author : xu
     * @date : 2020/6/10
     */
    public class ReadThread extends Thread {
    
        public List<String> listData;
    
    
        @Override
        public void run() {
    
            int i = 0;
    
            for (String item : listData) {
                String[] content = item.split(",");
                if (content.length != 2 || content[0] == "") {
                    System.out.println("formate error data." + item);
                    continue;
                }
    
                String version = "";
                if (content[1].trim() != "") {
                    version = "?ver=" + content[1];
                }
    
                String xmlParent = content[0].replace(".jpg", "") + "/";
                readData(xmlParent + "scene.xml" + version);
                i++;
                if (i % 50 == 0) {
                    System.out.println(Thread.currentThread().getName() + "--" + i);
                }
            }
    
            System.out.println("done,size" + listData.size());
        }
    
        private void readData(String file) {
            if (!file.startsWith("http")) {
                return;
            }
    
            try {
                URL url = new URL(file);
                InputStream is = url.openStream();
                BufferedInputStream bis = new BufferedInputStream(is);
                StringBuffer sb = new StringBuffer();
                int len;
                byte[] temp = new byte[1024];
                while ((len = bis.read(temp)) != -1) {
                    sb.append(new String(temp, 0, len));
                }
    
                if (!sb.toString().contains("scene")) {
                    System.out.println("error file:" + file);
                }
            } catch (IOException e) {
                System.out.println("read file exception:" + file);
            }
        }
    
        public List<String> getListData() {
            return listData;
        }
    
        public void setListData(List<String> listData) {
            this.listData = listData;
        }
    }

    在服务器后台执行指定文件的main方法,并且日志写入到指定文件

     java -cp scene-1.0-SNAPSHOT.jar my.scan.App VR_Scene_CloudPath_ok.csv >>result.log 2>&1 &

    执行后会返回程序的执行进程id。

  • 相关阅读:
    简单线程池的设计
    MFC开发--截图工具
    Win32小游戏--蜘蛛纸牌
    C++语言动态创建对象
    C++语言类之间的关系
    c++语言虚函数实现多态的原理(更新版)
    5-24 c++语言之【基础知识】
    小细节--关于printf的输出问题
    Win32小游戏--贪吃蛇
    2020北大夏令营 终末游记
  • 原文地址:https://www.cnblogs.com/xuxu-dragon/p/13088090.html
Copyright © 2011-2022 走看看