之前碰到过一个BUG,发现是文件路径有误,因为开发环境是Windows,获取某个目录的时候是以盘符开头,如:D:\,但是项目部署环境是Linux,Linux中文件路径是‘/’开头,所以报错了。写下这篇博客记录一下。
获取系统信息
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Formatter; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties;
public class SystemTest { public static List<String> getIpAddress() { Process p = null; List<String> address = new ArrayList<String>(); try { p = new ProcessBuilder("ipconfig", "/all").start(); } catch (Exception e) { return address; } StringBuffer sb = new StringBuffer(); InputStream inputStream = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String s = ""; try { while ((s = br.readLine()) != null) { sb.append(s + "\n"); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } System.out.println(sb); return address; }
public static void getIpconfig() { Map<String, String> map = System.getenv(); System.out.println(map.get("USERNAME")); System.out.println(map.get("COMPUTERNAME")); System.out.println(map.get("USERDOMAIN")); }
public static void getConfig() { try { InetAddress address = InetAddress.getLocalHost(); NetworkInterface ni = NetworkInterface.getByInetAddress(address); byte[] mac = ni.getHardwareAddress(); String sIP = address.getHostAddress(); String sMAC = ""; Formatter formatter = new Formatter(); for (int i = 0; i < mac.length; i++) { sMAC = formatter.format(Locale.getDefault(), "%02X%s", mac[i], (i < mac.length - 1) ? "-" : "").toString(); } System.out.println("IP:" + sIP); System.out.println("MAC:" + sMAC); } catch (Exception e) { e.printStackTrace(); } }
public static void Config() { try { InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress().toString(); String hostName = addr.getHostName().toString(); System.out.println("本机IP:" + ip + "\n本机名称:" + hostName); Properties props = System.getProperties(); System.out.println("操作系统的名称:" + props.getProperty("os.name")); System.out.println("操作系统的版本:" + props.getProperty("os.version")); } catch (Exception e) { e.printStackTrace(); } }
public static void all() { Properties props = System.getProperties(); System.out.println("Java的运行环境版本:" + props.getProperty("java.version")); System.out.println("Java的运行环境供应商:" + props.getProperty("java.vendor")); System.out.println("Java供应商的URL:" + props.getProperty("java.vendor.url")); System.out.println("Java的安装路径:" + props.getProperty("java.home")); System.out.println("Java的虚拟机规范版本:" + props.getProperty("java.vm.specification.version")); System.out.println("Java的虚拟机规范供应商:" + props.getProperty("java.vm.specification.vendor")); System.out.println("Java的虚拟机规范名称:" + props.getProperty("java.vm.specification.name")); System.out.println("Java的虚拟机实现版本:" + props.getProperty("java.vm.version")); System.out.println("Java的虚拟机实现供应商:" + props.getProperty("java.vm.vendor")); System.out.println("Java的虚拟机实现名称:" + props.getProperty("java.vm.name")); System.out.println("Java运行时环境规范版本:" + props.getProperty("java.specification.version")); System.out.println("Java运行时环境规范供应商:" + props.getProperty("java.specification.vender")); System.out.println("Java运行时环境规范名称:" + props.getProperty("java.specification.name")); System.out.println("Java的类格式版本号:" + props.getProperty("java.class.version")); System.out.println("Java的类路径:" + props.getProperty("java.class.path")); System.out.println("加载库时搜索的路径列表:" + props.getProperty("java.library.path")); System.out.println("默认的临时文件路径:" + props.getProperty("java.io.tmpdir")); System.out.println("一个或多个扩展目录的路径:" + props.getProperty("java.ext.dirs")); System.out.println("操作系统的名称:" + props.getProperty("os.name")); System.out.println("操作系统的构架:" + props.getProperty("os.arch")); System.out.println("操作系统的版本:" + props.getProperty("os.version")); System.out.println("文件分隔符:" + props.getProperty("file.separator")); System.out.println("路径分隔符:" + props.getProperty("path.separator")); System.out.println("行分隔符:" + props.getProperty("line.separator")); System.out.println("用户的账户名称:" + props.getProperty("user.name")); System.out.println("用户的主目录:" + props.getProperty("user.home")); System.out.println("用户的当前工作目录:" + props.getProperty("user.dir")); }
public static void main(String[] args) { getConfig(); Config(); all(); } }
|
运行main方法部分结果:

获取文件路径(Windows 和Linux区别)
注意: Windows的文件盘符是以盘符开头,如:D:\
但是 Linux的文件盘符是以’/‘开头,如:/usr/local

因此:我们在获取和系统相关的路径的时候,需要注意项目部署的环境,linux环境下的路径前面待’/‘,但是windows环境下的路径前面不带‘/’
1 2 3 4
| // 注意:windows环境下的路径获取 // this.path = ClassUtils.getDefaultClassLoader().getResource("").getPath().substring(1);// 获取静态资源路径(去除了前面的/) // 注意:linux环境下的路径获取 this.path = ClassUtils.getDefaultClassLoader().getResource("").getPath();// 获取静态资源路径(不能去除前面的/)
|