Java 判断 *** 作系统是linux还是windows,主要是使用system这个类,这个类型提供了获取java版本、安装目录、 *** 作系统等等信息,代码如下:
Systemoutprintln("=========== *** 作系统是:"+SystemgetProperties()getProperty("osname"));Systemoutprintln("===========文件的分隔符为fileseparator:"+SystemgetProperties()getProperty("fileseparator"));
System类
public static Properties getProperties()
将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回
键 相关值的描述
javaversion Java 运行时环境版本
javavendor Java 运行时环境供应商
javavendorurl Java 供应商的 URL
javahome Java 安装目录
你后面那个方法写错了。应该为createTempFile才对。呵呵
以下摘着《Java 2 Platform Standard Edition 50 的 API 规范》
createNewFile
public boolean createNewFile()
throws IOException当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。检查文件是否存在,如果不存在则创建该文件,这是单个 *** 作,对于其他所有可能影响该文件的文件系统活动来说,该 *** 作是原子的。
注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 机制替代。
返回:
如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false
抛出:
IOException - 如果发生 I/O 错误
SecurityException - 如果存在安全管理器,且其 SecurityManagercheckWrite(javalangString) 方法拒绝对文件进行写入访问
createTempFile
public static File createTempFile(String prefix,
String suffix)
throws IOException在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。调用此方法等同于调用 createTempFile(prefix, suffix, null)。
参数:
prefix - 用于生成文件名的前缀字符串;至少必须是三个字符长
suffix - 用于生成文件名的后缀字符串;可能是 null,在这种情况下,将使用后缀 "tmp"
返回:
表示新创建的空文件的抽象路径名
抛出:
IllegalArgumentException - 如果 prefix 参数包含少于三个的字符
IOException - 如果无法创建文件
SecurityException - 如果存在安全管理器,且其 SecurityManagercheckWrite(javalangString) 方法不允许创建文件
createTempFile
public static File createTempFile(String prefix,
String suffix,
File directory)
throws IOException在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:
由返回的抽象路径名表示的文件在此方法被调用之前不存在,并且
此方法及其所有变体都不会在再次当前调用虚拟机时返回相同的抽象路径名。
此方法只提供了临时文件的部分功能。要安排自动删除此方法创建的文件,可使用 deleteOnExit() 方法。
prefix 参数至少必须是三个字节长。建议前缀使用一个短的、有意义的字符串,比如 "hjb" 或 "mail"。suffix 参数可能是 null,在这种情况下,将使用后缀 "tmp"。
要创建新文件,可能首先要调整前缀和后缀,使其满足基础平台的限制。如果前缀太长,则将它截断,但前三个字符将始终保留。如果后缀太长,则将它截断,但如果它以句点字符 ('') 开始,则该句点以及它后面跟着的三个字符将始终保留。一旦已经进行了这些调整,则将通过连接前缀、五个或更多个内部生成的字符和后缀生成新文件的名称。
如果 directory 参数为 null,则使用与系统有关的默认临时文件目录。默认临时文件目录由系统属性 javaiotmpdir 指定。在 UNIX 系统上,此属性的默认值通常是 "/tmp" 或 "/var/tmp";在 Microsoft Windows 系统上,该值通常是 "C:\\WINNT\\TEMP"。在调用 Java 虚拟机时,可为此系统属性提供不同的值,但如果其他程序更改了此属性,则不保证这会对此方法使用的临时目录产生任何影响。
参数:
prefix - 用于生成文件名的前缀字符串;至少必须是三个字符长
suffix - 用于生成文件名的后缀字符串;可能是 null,在这种情况下,将使用后缀 "tmp"
directory - 将创建的文件所在的目录,如果使用默认临时文件目录,则该参数为 null
返回:
表示新创建的空文件的抽象路径名
抛出:
IllegalArgumentException - 如果 prefix 参数包含少于三个的字符
IOException - 如果无法创建文件
SecurityException - 如果存在安全管理器,且其 SecurityManagercheckWrite(javalangString) 方法不允许创建文件
要学会看API帮助文档,以后有什么不会可以查看API帮助文档。
import javautilProperties;
public class Test{
public static void main (String args[]){
Properties props=SystemgetProperties(); //系统属性
Systemoutprintln("Java的运行环境版本:"+propsgetProperty("javaversion"));
Systemoutprintln("Java的运行环境供应商:"+propsgetProperty("javavendor"));
Systemoutprintln("Java供应商的URL:"+propsgetProperty("javavendorurl"));
Systemoutprintln("Java的安装路径:"+propsgetProperty("javahome"));
Systemoutprintln("Java的虚拟机规范版本:"+propsgetProperty("javavmspecificationversion"));
Systemoutprintln("Java的虚拟机规范供应商:"+propsgetProperty("javavmspecificationvendor"));
Systemoutprintln("Java的虚拟机规范名称:"+propsgetProperty("javavmspecificationname"));
Systemoutprintln("Java的虚拟机实现版本:"+propsgetProperty("javavmversion"));
Systemoutprintln("Java的虚拟机实现供应商:"+propsgetProperty("javavmvendor"));
Systemoutprintln("Java的虚拟机实现名称:"+propsgetProperty("javavmname"));
Systemoutprintln("Java运行时环境规范版本:"+propsgetProperty("javaspecificationversion"));
Systemoutprintln("Java运行时环境规范供应商:"+propsgetProperty("javaspecificationvender"));
Systemoutprintln("Java运行时环境规范名称:"+propsgetProperty("javaspecificationname"));
Systemoutprintln("Java的类格式版本号:"+propsgetProperty("javaclassversion"));
Systemoutprintln("Java的类路径:"+propsgetProperty("javaclasspath"));
Systemoutprintln("加载库时搜索的路径列表:"+propsgetProperty("javalibrarypath"));
Systemoutprintln("默认的临时文件路径:"+propsgetProperty("javaiotmpdir"));
Systemoutprintln("一个或多个扩展目录的路径:"+propsgetProperty("javaextdirs"));
Systemoutprintln(" *** 作系统的名称:"+propsgetProperty("osname"));
Systemoutprintln(" *** 作系统的构架:"+propsgetProperty("osarch"));
Systemoutprintln(" *** 作系统的版本:"+propsgetProperty("osversion"));
Systemoutprintln("文件分隔符:"+propsgetProperty("fileseparator")); //在 unix 系统中是”/”
Systemoutprintln("路径分隔符:"+propsgetProperty("pathseparator")); //在 unix 系统中是”:”
Systemoutprintln("行分隔符:"+propsgetProperty("lineseparator")); //在 unix 系统中是”/n”
Systemoutprintln("用户的账户名称:"+propsgetProperty("username"));
Systemoutprintln("用户的主目录:"+propsgetProperty("userhome"));
Systemoutprintln("用户的当前工作目录:"+propsgetProperty("userdir"));
}
}
参考下面代码,说明已在代码中注释:
import javaioFile;import javaioFileOutputStream;
import javaioIOException;
import javatextSimpleDateFormat;
import javautilDate;
public class WriteFile {
public static void main(String[] args) {
writeFile();
}
public static void writeFile(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String content = sdfformat(new Date());
Systemoutprintln("现在时间:" + content);
FileOutputStream out = null;
File file;
try {
String rootFile = "D:\\tests\\license";
file = new File(rootFile);
if (!fileexists()) {
/
filemkdirs():创建没有存在的所有文件夹
filemkdir():创建没有存在的最后一层文件夹
例如:在硬盘上有D://test 文件夹,但是现在需要创建D://test//license//save,这个时候就需要使用filemkdirs()而不能使用filemkdir(),另外这两个方法都是仅仅能创建文件夹,不能创建文件,即使创建D://test//license//save//systemTimedat如果使用该方法创建的SystemTimedat也是一个文件夹 ,而不是文件
/
filemkdirs();
}
File fileDat = new File(rootFile + "\\systemFiledat");
/
if(!fileDatexists()){
//创建文件 不是文件夹,在程序中这这一步没有必要,因为
new FileOutputStream(fileDat);该语句有创建文件的功能
fileDatcreateNewFile();//
}
/
out = new FileOutputStream(fileDat);
byte[] contentInBytes = contentgetBytes();
outwrite(contentInBytes);
outflush();
outclose();
Systemoutprintln("Done");
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (out != null) {
outclose();
}
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
Java代码的编译与反编译
2017-02-21Hollis数盟
一、什么是编译
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
二、什么是反编译
计算机软件反向工程(Reverseengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
三、Java类的编译与反编译
我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworldjava文件编译成helloworldclass文件。
class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和 *** 作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和 *** 作系统上的二进制文件。
那么反编译呢,就是通过helloworldclass文件得到java文件(或者说是程序员能看懂的Java文件)
四、什么时候会用到反编译
1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么我们可以把它反编译成我们可以看得懂的文件。
2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。
五、反编译工具
1、javap
2、Jad:官网(墙裂推荐)
客户端:
可以在官网下载可执行文件,找到对应的 *** 作系统的对应版本,然后进行安装使用。
因为我使用的是linux *** 作系统,所以我下载的是Linux版本的工具,这个工具下载好之后会有一个执行文件,只要在执行文件所在目录执行/jadhelloworldclass就会在当前目录下生成helloworldjad文件,该文件里就是我们很熟悉的Java代码
Eclipse插件:
下载地址在官网下载插件的jar包,然后将jar包放到eclipse的plugins目录下‘在打开Eclipse,Eclipse->Window->Preferences->Java,此时你会发现会比原来多了一个JadClipse的选项,单击,在Pathtodecompiler中输入你刚才放置jadexe的位置,也可以制定临时文件的目录。当然在JadClipse下还有一些子选项,如Debug,Directives等,按照默认配置即可。基本配置完毕后,我们可以查看一下class文件的默认打开方式,Eclipse->Window->Preferences->General->Editors->FileAssociations我们可以看到class文件的打开方式有两个,JadClipse和Eclipse自带的ClassFileViewer,而JadClipse是默认的。全部配置完成,下面我们可以查看源码了,选择需要查看的类,按F3即可查看源码
以上就是关于java 如何判断 *** 作系统是Linux还是Windows全部的内容,包括:java 如何判断 *** 作系统是Linux还是Windows、JAVA里Flie类的creatnewfile与creattempfile有什么不同、java获得当前服务器的 *** 作系统是什么怎么获得等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)