linux运行java程序

这个帖子实现的是linux上运行java代码


前言

事情发生的原因是博洋需要知道海外城市的数量,我一开始准备将全量数据拉取到本地,用代码遍历一遍。但是打包好全量数据,发现有60个G,这条路显然走不通。便想到能不能再linux上运行代码,实现获取城市数量。然后就百度资料,最后成功实现。YES!


提示:以下是本篇文章正文内容,下面案例可供参考

一、编写代码

java代码如下。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class SearchDir{

    public static void main(String[] args) {
        getDirName();
    }

    public static void getDirName()
    {
        String pathName = "/mapdata/unzipOutput03082/unzip_3dLandmark_data";
        //pathName = "C:\\Users\\Desktop\\test000";            //windows路径
        List<String> dirList = new ArrayList<>();
        getDirnameList(pathName, dirList);
        writeListToText(dirList);
    }

    public static void writeListToText(List<String> dirList)
    {
        //String path = "C:\\Users\\Desktop\\proWrite\\txtFile.txt";    //windows路径
        String path = "/mapdata/unzipOutput03082/dir.txt";
        File pathFile = new File(path);
        if(!pathFile.exists())
        {
            createFile(pathFile);
        }
        BufferedWriter bw = null;
        FileWriter fr = null;
        try {
            //将写入转化为流的形式
            fr = new FileWriter(path);
            bw = new BufferedWriter(fr);
            //一次写一行
            for (String s : dirList) {
                bw.write(s);
                bw.newLine();  //换行用
            }
            String num = "total:" + String.valueOf(dirList.size());
            bw.write(num);
            bw.newLine();  //换行用
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (bw != null) {
                    bw.close();
                }
                if (fr != null) {
                    fr.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static void getDirnameList(String path, List<String> list)
    {
        File file = new File(path);
        if(file.isDirectory())
        {
            String dir = file.toString().substring(file.toString().lastIndexOf(File.separator) + 1);
            if(dir.contains("_") || dir.equals("2022") || dir.equals("collada") || dir.contains("3dlm") || dir.length() <= 3) {
                ;
            }
            else
            {
                list.add(dir);
            }

            File[] fileList = file.listFiles();
            for(File f : fileList)
            {
                getDirnameList(f.toString(), list);
            }
        }
    }

    public static void createFile(File file) {
        if (file.exists()) {
            System.out.println("File exists");
        } else {
            System.out.println("File not exists, create it ...");
            //getParentFile() 获取上级目录(包含文件名时无法直接创建目录的)
            if (!file.getParentFile().exists()) {
                System.out.println("not exists");
                //创建上级目录
                file.getParentFile().mkdirs();
            }
            try {
                //在上级目录里创建文件
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

2024年1月8日19:34:33

遍历文件并读取文件大小,写入txt文件

package com.huawei.mobilegis.data.common;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SearchDir{

	public static void main(String[] args) {
        getDirFileSize();
    }

    public static void getDirFileSize()
    {
        String pathName = "D:\\data\\outputPath\\midPath\\glb_dataBackup\\3DLandmark";
        Map<String, String> map = getDirFileList(pathName);

        writeMapToText(map);
        int j = 0;
    }

    public static void writeMapToText(Map<String, String> map)
    {
        String path = "D:\\data\\outputPath\\midPath\\glb_dataBackup\\txtFile.txt";
        File pathFile = new File(path);
        if(!pathFile.exists())
        {
            createFile(pathFile);
        }
        BufferedWriter bw = null;
        FileWriter fr = null;
        try {
            //将写入转化为流的形式
            fr = new FileWriter(path);
            bw = new BufferedWriter(fr);
            //一次写一行
            for (String key : map.keySet()) {
                String s = key + "  " + map.get(key);
                bw.write(s);
                bw.newLine();  //换行用
            }
            String num = "total:" + map.size();
            bw.write(num);
            bw.newLine();  //换行用
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (bw != null) {
                    bw.close();
                }
                if (fr != null) {
                    fr.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static Map<String, String> getDirFileList(String path)
    {
        File folder = new File(path);
        File[] files = folder.listFiles();
        Map<String, String> map = new HashMap<>();
        for(File file : files)
        {

            String name = file.getName();
            if(name.contains("_M")) {
                long size = file.length();
                float sizeofKb = (float)size / 1000;
                String sizeStr = sizeofKb + "KB";
                map.put(name, sizeStr);
            }
        }

        return map;
    }
}

二、linux执行

1.查看linux是否安装java环境

安装Java开发工具包(JDK)
在Linux系统中,我们可以使用包管理器来安装JDK。以Ubuntu系统为例,可以使用apt-get命令来安装JDK。

sudo apt-get install default-jdk

安装完成后,可以使用以下命令来验证JDK的安装情况:

javac -version
如果输出了JDK的版本信息,则说明安装成功。

 我的服务器本身安装了jdk,不需要额外安装

2.编译代码

将代码拷贝到服务器,执行一下操作

编译: javac SearchDir.java
运行   java SearchDir

运行结果

 

在txt文件中成功得到期望的结果。

成功!

三、本地运行

成功! 

工程代码

https://gitee.com/runruntiger/csdnprojecticon-default.png?t=N7T8https://gitee.com/runruntiger/csdnproject

四、更新

写了个代码统计文件名和文件大小

代码如下:

package com.xxx.xxx.xxx.common;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SearchDir{

    public static void main(String[] args) {
        getDirFileSize();
    }

    public static void getDirFileSize()
    {
        String pathName = "/data/April/FileSizeCalculate//../naviInfoGlb";
        Map<String, String> map = getDirFileList(pathName);

        writeMapToText(map);
        int j = 0;
    }

    public static void writeMapToText(Map<String, String> map)
    {
        String path = "/data/April/FileSizeCalculate/txtFile.txt";
        File pathFile = new File(path);
        if(!pathFile.exists())
        {
            createFile(pathFile);
        }
        BufferedWriter bw = null;
        FileWriter fr = null;
        try {
            //将写入转化为流的形式
            fr = new FileWriter(path);
            bw = new BufferedWriter(fr);
            //一次写一行
            for (String key : map.keySet()) {
                String s = key + "  " + map.get(key);
                bw.write(s);
                bw.newLine();  //换行用
            }
            String num = "total:" + map.size();
            bw.write(num);
            bw.newLine();  //换行用
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (bw != null) {
                    bw.close();
                }
                if (fr != null) {
                    fr.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static Map<String, String> getDirFileList(String path)
    {
        File folder = new File(path);
        File[] files = folder.listFiles();
        Map<String, String> map = new HashMap<>();
        for(File file : files)
        {

            String name = file.getName();
            if(name.contains("_M")) {
                long size = file.length();
                float sizeofKb = (float)size / 1000;
                String sizeStr = sizeofKb + "KB";
                map.put(name, sizeStr);
            }
        }

        return map;
    }

 报错:Error: Could not find or load main class SearchDir.class

需要删掉package com.xxx.xxx.xxx.common;

并且当执行java SearchDir指令时,会自动匹配成java SearchDir.引导输入java SearchDir.class。但是正确的指令是java SearchDir。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值