目前而言,编程语言真的是太多了。每一种都是一种智慧的结晶,但是每个都存在其缺点。网上经常能看到一些程序员争论“XX是世界上最好的语言”之类的话题。其实我们大可不必这样。语言本身只是一种工具,一种帮助我们实现自己功能的工具。我们为什么非要一棵树上吊死呢?
我不否认,使用一种语言。确实便于维护和管理。但是综合多种语言,共同完成一个项目,岂不更加高效吗?这正如一个团队项目,几个人一起做,总比一个人孤军奋战来的好吧。
下面,我就以Java语言为主,分别讨论一下如何调用其他语言来完成我们的需求。
Java 调用简单CMD
CMD作为windows平台上脚本老大哥,虽然命令很少,但是功能还是很强大的。在Java中调用外部的执行命令,只需要使用Runtime即可。
public class CMDRelative {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
System.out.println("Ready to carry CMD!");
try {
r.exec("cmd /k calc");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("End to carry CMD!");
}
}
exec方法有很多的重载,我们可以根据情况来进行调用。
Java调用CMD并实现内容的输出
要想获得CMD命令执行的反馈信息,需要借助输入流来实现。如下:
public static void callPing() {
try {
Process p = Runtime.getRuntime().exec("ping www.douban.com");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!=null){
sb.append(line);
sb.append("\n");
}
line = new String(sb);
System.out.println(line.toString());
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
调用此方法之后,控制台获得的反馈信息如下:
正在 Ping www.douban.com [211.147.4.32] 具有 32 字节的数据:
来自 211.147.4.32 的回复: 字节=32 时间=29ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=29ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=25ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=55ms TTL=49
211.147.4.32 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 25ms,最长 = 55ms,平均 = 34ms
如此,便可以实现Java调用CMD,并获得反馈信息。
Java调用Python
Python是一个抽象层次更高的语言,其完美的库真的是让人爱不释手啊,强大的库成就了Python。下面我们就来看一个小例子,看看Java是怎么调用Python的。使用Java调用Python的前提是有一个运行环境的支持,这里采用的是jython.jar
jython.jar下载地址
先看看Python代码吧。
print 'Hello Java.I am Python.Enjoy my funny'
from time import *
print asctime()
print 'Begin to create one file'
wrfile = open('E:\\Code\\Java\\Test4Android\\src\\python\\Python_file','wb')
rdfile = open('E:\\Code\\Java\\Test4Android\\src\\python\\RunPython.java','rb')
content = rdfile.read()
rdfile.close()
wrfile.write(content)
wrfile.close()
print 'write file process end!'
然后是Java代码
package python;
import org.python.util.PythonInterpreter;
public class RunPython {
public static void main(String[] args) {
System.out.println("Begin to run python script:");
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("E:\\Code\\Java\\Test4Android\\src\\python\\input.py");
}
}
下面看看执行的结果:
Begin to run python script:
Hello Java.I am Python.Enjoy my funny
星期二 六月 28 19:33:56 2016
Begin to create one file
write file process end!
然后确实可以在同级的目录下,发现多了一个名为Python_file.txt的文件。打开之后,内容和RunPython.java 是一致的。
额外的话
其实今天的代码部分的分享到这里就完了,但是从这两个小例子中我们不难看出。每种语言都有其优点,我们要学会利用它们的优点,而且是发挥出它们本身最大的价值。这样才能事半功倍。单纯的依靠一种语言,恐怕效果并不一定会很好的吧。
比如,我们用Python收集数据,使用Java进行处理,使用js完善,等等吧。
其实技术上不是最困难的,真正困难的是如何打破思维僵化,打破惯性!
:-)
最后附上一个CMD命令查询表
CMD命令
1. gpedit.msc
2. sndrec32
3. Nslookup
4. explorer
5. logoff
6. tsshutdn
7. lusrmgr.msc
8. services.msc
9. oobe/msoobe /a
10. notepad
11. cleanmgr
12. net start messenger
13. compmgmt.msc
14. net stop messenger
15. conf
16. dvdplay
17. charmap
18. diskmgmt.msc
19. calc
20. dfrg.msc
21. chkdsk.exe
22. devmgmt.msc
23. regsvr32 /u *.dll
24. drwtsn32
25. rononce -p
26. dxdiag
27. regedt32
28. Msconfig.exe
29. rsop.msc
30. mem.exe
31. regedit.exe
32. winchat
33. progman
34. winmsd
35. perfmon.msc
36. winver
37. sfc /scannow
38. taskmgr
39. winver
40. wmimgmt.msc
41. wupdmgr
42. wscript
43. write
44. winmsd
45. wiaacmgr
46. winchat
47. mem.exe
48. Msconfig.exe
49. mplayer2
50. mspaint
51. mstsc
52. mplayer2
53. magnify
54. mmc
55. mobsync
56. dxdiag
57. drwtsn32
58. devmgmt.msc
59. dfrg.msc
60. diskmgmt.msc
61. dcomcnfg
62. ddeshare
63. dvdplay
64. net stop messenger
65. net start messenger
66. notepad
67. nslookup
68. ntbackup
69. narrator
70. ntmsmgr.msc
71. ntmsoprq.msc
72. netstat -an
73. syncapp
74. sysedit
75. sigverif
76. sndrec32
77. shrpubw
78. secpol.msc
79. syskey
80. services.msc
81. Sndvol32
82. sfc.exe
83. sfc /scannow
84. tsshutdn
3. 84. tsshutdn
85. tourstart
86. taskmgr
87. eventvwr
88. eudcedit
89. explorer
90. packager
91. perfmon.msc
92. progman
93. regedit.exe
94. rsop.msc
95. regedt32
96. rononce -p
97. regsvr32 /u *.dll
98. regsvr32 /u zipfldr.dll
99. cmd.exe
100. chkdsk.exe
101. certmgr.msc
102. calc
103. charmap
104. cliconfg
105. Clipbrd
106. conf
107. compmgmt.msc
108. cleanmgr
109. ciadv.msc
110. osk
111. odbcad32
112. oobe/msoobe /a
113. lusrmgr.msc
114. logoff
115. iexpress
116. Nslookup
117. fsmgmt.msc
118. utilman
119. gpedit.msc
120. explorer