如何在Java中获取环境变量的值

如何在Java中获取环境变量的值,第1张

当程序中需要使用与 *** 作系统相关的变量(例如:文件分隔符、换行符)时,Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回的变量大多于系统相关,getProperty方法返回的变量大多与java程序有关。

系统属性和环境变量都是名称与值之间的映射。两种机制都能用来将用户定义的信息传递给 Java进程。环境变量产生更多的全局效应,因为它们不仅对Java子进程可见,而且对于定义它们的进程的所有子进程都是可见的。在不同的 *** 作系统上,它们的语义有细微的差别,比如,不区分大小写。因此环境变量更可能有意料不到的副作用。程序中尽可能使用系统属性。环境变量应该在需要全局效应的时候使用,或者在外部系统接口要求使用环境变量时使用(比如 PATH)。

1、环境变量getenv() :用于获取当前系统环境的字符串映射视图;测试代码及运行结果如下:

publicclass Test {

publicstaticvoid main(String[] args) {

Map<String, String> map = Systemgetenv();

for(Iterator<String> itr = mapkeySet()iterator();itrhasNext();){

String key = itrnext();

Systemoutprintln(key + "=" + mapget(key));

}

}

}

USERPROFILE :用户目录

USERDNSDOMAIN :用户域

PATHEXT :可执行后缀

JAVA_HOME :Java安装目录

TEMP :用户临时文件目录

SystemDrive :系统盘符

ProgramFiles :默认程序目录

USERDOMAIN :帐户的域的名称

ALLUSERSPROFILE :用户公共目录

SESSIONNAME :Session名称

TMP :临时目录

Path :path环境变量

CLASSPATH :classpath环境变量

PROCESSOR_ARCHITECTURE :处理器体系结构

OS : *** 作系统类型

PROCESSOR_LEVEL :处理级别

COMPUTERNAME :计算机名

Windir :系统安装目录

SystemRoot :系统启动目录

USERNAME :用户名

ComSpec :命令行解释器可执行程序的准确路径

APPDATA :应用程序数据目录

2、系统属性getProperty() :当前的系统属性。测试代码及运行结果如下:

javaversion Java :运行时环境版本

javavendor Java :运行时环境供应商

javavendorurl :Java供应商的 URL

javahome :Java安装目录

javavmspecificationversion: Java虚拟机规范版本

javavmspecificationvendor :Java虚拟机规范供应商

javavmspecificationname :Java虚拟机规范名称

javavmversion :Java虚拟机实现版本

javavmvendor :Java虚拟机实现供应商

javavmname :Java虚拟机实现名称

javaspecificationversion:Java运行时环境规范版本

javaspecificationvendor:Java运行时环境规范供应商

javaspecificationname :Java运行时环境规范名称

javaclassversion :Java类格式版本号

javaclasspath :Java类路径

javalibrarypath :加载库时搜索的路径列表

javaiotmpdir :默认的临时文件路径

javacompiler :要使用的 JIT编译器的名称

javaextdirs :一个或多个扩展目录的路径

osname : *** 作系统的名称

osarch : *** 作系统的架构

osversion : *** 作系统的版本

fileseparator :文件分隔符

pathseparator :路径分隔符

lineseparator :行分隔符

username :用户的账户名称

userhome :用户的主目录

userdir:用户的当前工作目录

java中获得一个文件夹中的所有文件名代码如下:

package comreadfile;

import javaioFile;

public class GetAllFiles {

public static void main(String[] args) {

//路径   这里写一个路径进去

String path="F:\\QQ文档";

//调用方法

getFiles(path);

}

 

/

递归获取某路径下的所有文件,文件夹,并输出

/

public static void getFiles(String path) {

File file = new File(path);

// 如果这个路径是文件夹

if (fileisDirectory()) {

// 获取路径下的所有文件

File[] files = filelistFiles();

for (int i = 0; i < fileslength; i++) {

// 如果还是文件夹 递归获取里面的文件 文件夹

if (files[i]isDirectory()) {

Systemoutprintln("目录:" + files[i]getPath());

getFiles(files[i]getPath());

} else {

Systemoutprintln("文件:" + files[i]getPath());

}

}

} else {

Systemoutprintln("文件:" + filegetPath());

}

}

}

扩展资料:

如果想要获得当前文件中的文件名只需要String [] fileName = filelist();就可以了。

如果要包括文件中的文件名就可以用递归的方式。下面是两个具体的实现。

其中public static String [] getFileName(String path)是只得到当前文件中的文件名。

public static void getAllFileName(String path,ArrayList<String> fileName)是包括当前文件及其子文件的文件名。

参考资料:

百度百科-Java

import javaawtEventQueue;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaioFile;

import javautilScanner;

import javaxswingJButton;

import javaxswingJFileChooser;

import javaxswingJFrame;

import javaxswingJLabel;

import javaxswingJPanel;

import javaxswingJTextArea;

import javaxswingJTextField;

import javaxswingborderEmptyBorder;

public class CheckFileType extends JFrame {

/

/

private static final long serialVersionUID = -6167144370965431657L;

private JPanel contentPane;

private JTextField textField;

private JTextArea textArea;

/

Create the frame

/

public CheckFileType() {

setTitle("\u5224\u65AD\u6587\u4EF6\u7C7B\u578B");

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setBounds(100, 100, 501, 143);

contentPane = new JPanel();

contentPanesetBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPanesetLayout(null);

JLabel label = new JLabel("\u9009\u62E9\u6587\u4EF6\uFF1A");

labelsetBounds(10, 10, 84, 15);

contentPaneadd(label);

textField = new JTextField();

textFieldsetBounds(88, 2, 289, 30);

contentPaneadd(textField);

textFieldsetColumns(10);

JButton button = new JButton("\u6D4F\u89C8\u2026\u2026");

buttonaddActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_button_actionPerformed(e);

}

});

buttonsetBounds(389, 2, 90, 30);

contentPaneadd(button);

textArea = new JTextArea();

textAreasetOpaque(false);

textAreasetEditable(false);

textAreasetLineWrap(true);

textAreasetBounds(83, 37, 396, 60);

contentPaneadd(textArea);

}

protected void do_button_actionPerformed(ActionEvent e) {

Scanner scan = new Scanner(getClass()// 获取说明文件的扫描器 在文件中获得

getResourceAsStream("extNameinf"));

JFileChooser chooser = new JFileChooser();// 创建文件选择器

boolean searched = false;

int option = choosershowOpenDialog(this);// 打开文件选择对话框

if (option == JFileChooserAPPROVE_OPTION) {// 如果正确选择文件

File file = choosergetSelectedFile();// 获取用户选择文件

textFieldsetText(filegetName());// 把文件名添加到文本框

String name = filegetName();// 获取文件名

while (scanhasNextLine()) { // 遍历说明文件

String line = scannextLine();// 获取一行说明信息

String[] extInfo = linesplit("\t");// 把单行说明信息拆分成数组

// 数组第一个元素是文件扩展名,与用户选择文件名对比

if (nameendsWith(extInfo[0])) {

// 第二个数组元素是文件类型的说明信息,添加到文本域控件中

textAreasetText(extInfo[1]);

searched = true;

}

}

scanclose();// 关闭扫描器

}

if (!searched) {// 如果没找到相关文件类型的说明,则提示用户

textAreasetText("你选择的文件类型没有相应记录,你可以在extNameinfo文件中添加该类型的描述。");

}

}

/

Launch the application

/

public static void main(String[] args) {

try {

EventQueueinvokeLater(new Runnable() {

public void run() {

CheckFileType frame = new CheckFileType();

framesetVisible(true);

}

});

} catch (Exception e) {

eprintStackTrace();

}

}

}

辅助文件

txt您选择的是计算机中的文本文件,值包含文本内容,没有特殊格式代码,用任何文档编辑器都可以打开。

ini程序的配置文件,是针对某个应用程序所附带的配置信息。

exeWindows系统中的可执行文件,是程序的入口,可以直接执行,不需要其他辅助工具。

doc文档文件,Word97-2003都使用这种格式

docx文档文件,Word2007采用这种格式。

bmp位图文件,用于保存位图的图像,是Windows系统默认支持的一种格式。

jpg压缩格式的文件,它的提及更小,更加利于网络传输或作为网页点缀。

jpeg压缩格式的文件,它的提及更小,更加利于网络传输或作为网页点缀。

dllWindows系统中的动态链接库文件,它是应用程序的扩展,为程序提供更多的功能模块。

phpPhp开发的网页文件。

jspJava开发的网页文件。

javaJava语言的源代码文件。

rar压缩文档文件,其格式为RAR,是一种非常流行的压缩格式,压缩率很高,而且可以为压缩文档设置密码,可以创建自解压的压缩文档。

java开发中可以在一个方法里获取list数据和总条数,想要学习java开发推荐千锋教育,多年来深耕java开发教育,深得学子信赖。

想要掌握Java开发技术需要注意以下几点:

一、首先,对于初学者来说一定不能盲目,要有自己的规划,不然就是浪费时间白忙活。

二、既然是学习Java开发专业技术,建议是,一定要有一个能指导你的人,不能都靠自己闭门造车,这样的行为并不聪明,结识一位这方面的人才,时不时去人家问题,不然你可能会发现一个小问题能困扰你一天,最后还不知道是什么原因。

三、学习Java开发技术,不能跟学数学语文一样对待,比较刚接触代码是不容易记住的,所以要掌握上述的技术,你还要知道学习Java开发技术有哪些“坑”。对于学习方法这块是尤为重要的,怎么学才能让你学完了能记住之前学的那些,不至于学完了就忘,这个问题值得学习之前去思考的。

四、平时一定要养成好的学习习惯!把自己曾经遇到的问题整理在电脑的日记本上,然后搜集一下博客相关的Java技术文章,一些网站,以后都能用的上,如果想走的更远,一定要养成习惯。

想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。

itjobJava老师讲过:1)线程堆栈概述及基础知识

2)线程堆栈的生成原理以及相关工具

3)不同JVM线程堆栈的格式的差异(SunHotSpot、IBMJRE、OracalJRockit)

4)线程堆栈日志介绍以及解析方法

5)线程堆栈的分析和相关的技术

6)常见的问题模板(线程竟态、死锁、IO调用挂死、垃圾回收/问题、死循环等)

7)线程堆栈问题实例分析

我希望这一系列的培训能给你带来确实的帮助,所以请持续关注每周的文章更新。

但是如果我在学习过程中有疑问或者无法理解文章中的内容该怎么办?

不用担心,把我当做你的导师就好。任何关于线程堆栈的问题都可以咨询我(前提是问题不能太low)。请随意选择下面的几种方式与我取得联系:

1)直接本文下面发表评论(不好意思的话可以匿名)

2)将你的线程堆栈数据提交到RootCauseAnalysisforum

3)发Email给我,地址是@@hotmail

能帮我分析我们产品上遇到的问题么?

当然可以,如果你愿意的话可以把你的堆栈现场数据通过邮件或论坛RootCauseAnalysisforum发给我。处理实际问题是才是学习提升技能的王道。

我真心期望大家能够喜欢这个培训。所以我会尽我所能去为你提供高质量的材料,并回答大家的各种问题。

在介绍线程堆栈分析技术和问题模式之前,先要给大家讲讲基础的内容。所以在这篇帖子里,我将先覆盖到最基本的内容,这样大家就能更好的去理解JVM、中间件、以及JavaEE容器之间的交互。

JavaVM概述

Java虚拟机是JaveEE平台的基础。它是中间件和应用程序被部署和运行的地方。

JVM向中间件软件和你的Java/JavaEE程序提供了下面这些东西:

_(二进制形式的)Java/JavaEE程序运行环境

_一些程序功能特性和工具(IO基础设施,数据结构,线程管理,安全,监控等等)

_借助垃圾回收的动态内存分配与管理

你的JVM可以驻留在许多的 *** 作系统(Solaris,AIX,Windows等等)之上,并且能根据你的物理服务器配置,你可以在每台物理/虚拟服务器上安装1到多个JVM进程

JVM与中间件之间的交互

下面这张图展示了JVM、中间件和应用程序之间的高层交互模型。

如你所见,标准JavaEE应用程序的线程的分配实在中间件内核与JVM之间完成的。(当然也有例外,应用程序可以直接调用API来创建线程,这种做法并不常见,而且在使用的过程中也要特别的小心)

同时,请注意一些线程是由JVM内部来进行管理的,典型的例子就是垃圾回收线程,JVM内部使用这个线程来做并行的垃圾回收处理。

因为大多数的线程分配都是由JavaEE容器完成的,所以能够理解和认识线程堆栈跟踪,并能从线程堆栈数据中识别出它来,对你而言很重要这可以让你能够快速的知道JavaEE容器正要执行的是什么类型的请求

从一个线程转储堆栈的分析角度来看,你将能了解从JVM发现的线程池之间的不同,并识别出请求的类型

最后一节会向你提供对于HotSopVM而言什么是JVM线程堆栈的一个概述,还有你将会遇到的各种不同的线程而对IBMVM线程堆栈形式详细内容将会在第四节向你提供

请注意你可以从根本原因分析论坛获得针对本文的线程堆栈示例

JVM线程堆栈——它是什么

JVM线程堆栈是一个给定时间的快照,它能向你提供所有被创建出来的Java线程的完整清单

以上就是关于如何在Java中获取环境变量的值全部的内容,包括:如何在Java中获取环境变量的值、java中怎样获得一个文件夹中的所有文件名、Java中怎么获取文件类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9421214.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存