当程序中需要使用与 *** 作系统相关的变量(例如:文件分隔符、换行符)时,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代码
import java io File;
import java io FileInputStream;
import java io FileOutputStream;
import java io IOException;
import nf Conf;
import mon time TimeHandler;
/
加解密单元
@author lupingui
: :
/
public class EncryptDecrypt {
//加解密KEY 这个不能变动 这里可以由任意的字符组成 尽量用特殊字符
static final byte[] KEYVALUE = getBytes();
//读取字节的长度
static final int BUFFERLEN = ;
//加密临时存储目录
static final String TRANSIT_DIR_ENC = ;
//解密临时存储目录
static final String TRANSIT_DIR_DEC = ;
/
文件加密
@param oldFile 待加密文件
@param saveFileName 加密后文件保存路径
@return
@throws IOException
/
public static boolean encryptFile(File oldFile String saveFileName) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFile exists() || !oldFile isFile()){
return false;
}
FileInputStream in = new FileInputStream(oldFile);
//加密后存储的文件
File file = new File(saveFileName);
if (!file exists()){
return false;
}
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUE length;
byte buffer[] = new byte[BUFFERLEN];
while ((c = in read(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
out write(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
in close();
out close();
return true;
}
/
文件加密
@param oldFile:待加密文件
@param saveFile 加密后的文件
@return
@throws IOException
/
public static boolean encryptFile(File oldFile File saveFile) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFile exists() || !oldFile isFile() || !saveFile exists() || !saveFile isFile()){
return false;
}
FileInputStream in = new FileInputStream(oldFile);
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(saveFile);
int c pos keylen;
pos = ;
keylen = KEYVALUE length;
byte buffer[] = new byte[BUFFERLEN];
while ((c = in read(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
out write(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
in close();
out close();
return true;
}
/
文件加密
@param oldFile 待加密文件
@return
@throws IOException
/
public static File encryptFile(File oldFile) throws IOException{
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFile exists() || !oldFile isFile()){
return null;
}
FileInputStream in = new FileInputStream(oldFile);
//临时加密文件存储目录
File dirFile = new File(TRANSIT_DIR_ENC);
//如果临时存储目录不存在或不是目录则直接返回
if (!dirFile exists() || !dirFile isDirectory()){
return null;
}
//加密后存储的文件
File file = new File(dirFile enc_ + TimeHandler getInstance() getTimeInMillis() + _ + oldFile getName());
if (!file exists()){
file createNewFile();
}
//读取待加密文件加密后写入加密存储文件中
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUE length;
byte buffer[] = new byte[BUFFERLEN];
while ((c = in read(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
out write(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
in close();
out close();
//返回加密后的文件
return file;
}
/
文件加密
@param oldFileName 待加密文件路径
@return
@throws IOException
@throws Exception
/
public static File encryptFile(String oldFileName) throws IOException {
//如果待加密文件路径不正确则直接返回
if (oldFileName == null || oldFileName trim() equals( )){
return null;
}
//待加密文件
File oldFile = new File(oldFileName);
//如果传入的文件不存在或者不是文件则直接返回
if (!oldFile exists() || !oldFile isFile()){
return null;
}
//调用文件加密方法并返回结果
return encryptFile(oldFile);
}
/
文件解密
@param oldFile 待解密文件
@return
@throws IOException
/
public static File decryptFile(File oldFile) throws IOException{
//如果待解密文件不存在或者不是文件则直接返回
if (!oldFile exists() || !oldFile isFile()){
return null;
}
FileInputStream in = new FileInputStream(oldFile);
//临时解密文件存储目录
File dirFile = new File(TRANSIT_DIR_DEC);
//如果临时解密文件存储目录不存在或不是目录则返回
if (!dirFile exists() || !dirFile isDirectory()){
return null;
}
//解密存储文件
File file = new File(dirFile dec_ + TimeHandler getInstance() getTimeInMillis() + _ + oldFile getName() substring(oldFile getName() lastIndexOf( )));
if (!file exists()){
file createNewFile();
}
//读取待解密文件并进行解密存储
FileOutputStream out = new FileOutputStream(file);
int c pos keylen;
pos = ;
keylen = KEYVALUE length;
byte buffer[] = new byte[BUFFERLEN];
while ((c = in read(buffer)) != ) {
for (int i = ; i < c; i++) {
buffer[i] ^= KEYVALUE[pos];
out write(buffer[i]);
pos++;
if (pos == keylen){
pos = ;
}
}
}
in close();
out close();
//返回解密结果文件
return file;
}
/
文件解密
@param oldFileName 待解密文件路径
@return
@throws Exception
/
public static File decryptFile(String oldFileName) throws Exception {
//如果待解密文件路径不正确则直接返回
if (oldFileName == null || oldFileName trim() equals( )){
return null;
}
//待解密文件
File oldFile = new File(oldFileName);
//如果待解密文件不存在或不是文件则直接返回
if (!oldFile exists() || !oldFile isFile()){
return null;
}
//调用文件解密方法并返回结果
return decryptFile(oldFile);
}
lishixinzhi/Article/program/Java/hx/201311/26983
思路是这样的:1、将压缩文件解压缩到临时目录2、读取临时目录中的文件或者文件夹(如果是文件夹则读取文件夹中的文件以此类推)3、将读取的内容显示4、删除临时文件夹中的文件或者文件夹这些都没有难点gkos你觉得对你来说难度在哪里呢
可以把文件目录配置在webxml文件的初始化参数中, 通过ServletAPI读取文件目录
比如
定义一个Properties文件保存相关配置
#可以上传文件的后缀名
extensions=pptx,docxdoc,txt,jpg,jar
#单个文件的大小1M
fileMaxSize=1048576
#总共上传文件大小5M
totalFileMaxSize=5242880
#文件保存路径
filePath=z:/temp
#临时文件路径
tempDir=z:/temp/temp
使用Listener在服务器启动时加载配置信息
ServletContext context = eventgetServletContext();InputStream inputStream = context
getResourceAsStream("/WEB-INF/classes/file/upload/commons/uploadConfigproperties");
Properties properties = new Properties();
try {
propertiesload(inputStream);
contextsetAttribute("fileConfig", properties);
Systemoutprintln("properties = " + propertiessize());
} catch (IOException e) {
eprintStackTrace();
}
在你上传文件时通过配置文件读取路径保存
String filePath = ((Properties) thisgetServletContext()getAttribute("fileConfig"))
getProperty(FileUploadConstantsFILE_PATH);
以上就是关于如何在Java中获取环境变量的值全部的内容,包括:如何在Java中获取环境变量的值、Java文件加解密、java 读取zip里面的文件夹等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)