龙空技术网

「java知识点」java Process 有这三个标志要记住

武汉小阿旭 42

前言:

如今你们对“java的单引号双引号区别在哪”大体比较着重,咱们都需要剖析一些“java的单引号双引号区别在哪”的相关资讯。那么小编也在网上网罗了一些关于“java的单引号双引号区别在哪””的相关内容,希望小伙伴们能喜欢,同学们一起来了解一下吧!

有时候,需要使用Java调用Windows的cmd窗口去执行一些命令,或者调用Linux的terminal窗口执行命令。可以使用java的java.lang.Process类来完成。

String command="*********";

Process process=Runtime.getRuntime().exec(command); process.waitFor();12

在使用此方式时候,对于command,有通过调用Windows的cmd窗口或者Linux的terminal窗口来执行命令的,也有不通过terminal来执行命令的。

标志1是直接执行的,没有调用terminal;

标志2是调用了terminal来执行命令的;

标志3是调用了Windows的cmd来执行命令的。

//说明:/usr/local/ffmpeg/bin/ffmpeg是ffmpeg的路径,可以在PATH中配置其路径,然后就可以直接使用ffmpeg命令了

//标志1

command="/usr/local/ffmpeg/bin/ffmpeg -y -i /usr/local/tomcat/webapps/simplest_video_website/videoori/12345.mp4 -ss 5 -s 220x110 -f image2 -vframes 1 /usr/local/tomcat/webapps/simplest_video_website/videothumbnail/48.jpg

"

//标志2。注意提前安装好gnome-terminal,否则命令无法识别。或者也可以使用/bin/sh

String command="gnome-terminal -x /usr/local/ffmpeg/bin/ffmpeg -y -i "+"\""+realfileoriPath+"\""+

" -ss "+thumbnail_ss_cfg.getVal()+" -s 220x110 -f image2 -vframes 1 "+"\""+realthumbnailPath+"\"";

//标志3

String command="cmd /c start ffmpeg -y -i "+"\""+realfileoriPath+"\""+

" -ss "+thumbnail_ss_cfg.getVal()+" -s 220x110 -f image2 -vframes 1 "+"\""+realthumbnailPath+"\"";12345678910

对于标志1的执行,没有调用terminal,可以执行;但是当使用标志2的方式来执行时候,总是会报错:路径找不到。但是将命令输出,然后手动粘贴到terminal去执行,是正常无误的。原因目前还未知,猜想是Java对路径作了解析。对于这种参数问题,参考网页8中给出了一个参考方式,使用数组的方式传递参数

Runtime.getRuntime().exec(new String[]{"sh","-c",raw2flvCmd});1

标志3是Windows环境下的。

cmd /c dir 是执行完dir命令后关闭命令窗口。

cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。

蚂蚁课堂带你学Java

另外,有关于PATH

直接在命令行中设置PATH,只对当前会话有效

修改~/.bashrc只是对当前用户有效的PATH

修改.bash_profile只是对当前用户有效

修改/etc/profile是对所有用户生效

让修改立即生效,可使用source /etc/profile或者. /etc/profile

source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

报错bash: syntax error near unexpected token ('

需要转义\( xxx \)

shell转义符,分为双引号,单引号,以及\

双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\, ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。

HP-Pavilion-g4-Notebook-PC:/usr/local$ echo $x

bin eclipse etc ffmpeg games hadoop include lib man mysql mysql-server_5.7.16-1ubuntu14.04_amd64.deb-bundle.tar Python sbin selenium share src tomcat

HP-Pavilion-g4-Notebook-PC:/usr/local$ echo "$x"

*

HP-Pavilion-g4-Notebook-PC:/usr/local$ echo '$x'

$x

1234567

另外还看到使用JNative.jar的方式调用windows API。

就先聊到这,如想更深的了解请加群讨论哦 894180257

蚂蚁课堂带你学Java

标签: #java的单引号双引号区别在哪