在windows环境下,java程序调用awk不成功,切乱码 。
来源:互联网 发布:mysql 添加外键约束 编辑:程序博客网 时间:2024/06/06 05:17
@Test
public void testawk() throws IOException, InterruptedException {
String awk="awk \"{$1=0;print $0}\" c:\\awktest.txt>c:\\awktest1.txt";
System.out.println(awk);
Process ps = Runtime.getRuntime().exec(new String[] { "cmd.exe", "/C", awk });
// Process ps = Runtime.getRuntime().exec("C:\\awk.bat");
InputStream inputStream = ps.getInputStream();
InputStream errorStream = ps.getErrorStream();
System.out.println(inputStream);
System.out.println(errorStream);
Reader reader = new InputStreamReader(errorStream,"GBK");
BufferedReader bf = new BufferedReader(reader);
String line = null;
while((line=bf.readLine())!=null){
System.out.println("----------");
System.out.println(line);
}
int waitFor = ps.waitFor();
System.out.println("---返回的waitfor---"+waitFor);
InputStreamReader inputStr = new InputStreamReader(ps.getInputStream());
BufferedReader br = new BufferedReader(inputStr);
String temp = "";
System.out.println("----输入流-----");
while((temp = br.readLine())!= null){
System.out.println(temp);
}
ps.destroy();
br.close();
inputStr.close();
public void testawk() throws IOException, InterruptedException {
String awk="awk \"{$1=0;print $0}\" c:\\awktest.txt>c:\\awktest1.txt";
System.out.println(awk);
Process ps = Runtime.getRuntime().exec(new String[] { "cmd.exe", "/C", awk });
// Process ps = Runtime.getRuntime().exec("C:\\awk.bat");
InputStream inputStream = ps.getInputStream();
InputStream errorStream = ps.getErrorStream();
System.out.println(inputStream);
System.out.println(errorStream);
Reader reader = new InputStreamReader(errorStream,"GBK");
BufferedReader bf = new BufferedReader(reader);
String line = null;
while((line=bf.readLine())!=null){
System.out.println("----------");
System.out.println(line);
}
int waitFor = ps.waitFor();
System.out.println("---返回的waitfor---"+waitFor);
InputStreamReader inputStr = new InputStreamReader(ps.getInputStream());
BufferedReader br = new BufferedReader(inputStr);
String temp = "";
System.out.println("----输入流-----");
while((temp = br.readLine())!= null){
System.out.println(temp);
}
ps.destroy();
br.close();
inputStr.close();
}
首先解决乱码,我在用Reader reader = new InputStreamReader(errorStream,"GBK");这样,报的错误就解决,显示正常了。错误是:‘awk’ 无法识别.......,我配置环境变量,类似于陪jdk的环境变量,我只是配了path,值为我awk.exe文件所在的路径。用cmd命令执行在c:,d:,f:都能正常执行awk指令。
但是用程序执行就报错。我明明陪环境变量了,并且成功,为啥还报awk未知程序。不解
后来同事解决乱码问题时,将window》priferences中的编码换为gbk(我原来自己改的utf-8),重新执行成功。
我有重新换成utf-8现在也可以了。真不知道是什么原因。
同事是看了个帖子(
出现awk中文无法显示的原因是由于我的awk脚本的编码问题,我是在window下生成awk脚本, 所以编码不是unicode。所以等到在linux下echo中文的语句,字符编码自然不是utf-8,在终端显示为乱码。(我的终端是默认utf-8编码显示的))然后改的编码。我是直接改的输入流编码。后来也遇到过这个问题,发现重启电脑后可以啦,难道有缓存问题。
知道原因的大神,给说说原因
阅读全文
0 0
- 在windows环境下,java程序调用awk不成功,切乱码 。
- Windows下Qt程序在Linux环境下运行中文乱码解决
- node.js在windows下服务不成功
- flex air应用程序在windows环境下调用外部exe程序的一种方法
- java的Runtime在windows系统下调用ping命令乱码
- 俄语UI资源的VC程序在英文版windows XP/windows 7俄语环境下乱码问题
- tomcat7 运行在windows环境下乱码问题的解决
- (2)cocos2dx在windows环境下中文显示乱码
- Weka在Windows环境下中文乱码问题
- Windows下在Java中调用GraphViz
- 在servlet中运行调用py程序不成功问题
- java在windows环境下的配置
- ubuntu下用eclipse打开在windows下写的java程序出现汉字乱码问题和字体修改
- 如何在JAVA程序中调用windows其他程序
- Java压缩解压zip文件的中文文件名在Windows和Linux环境下乱码问题的解决方案
- 在VS2008环境下 python 利用调用 C++程序 接口
- Java调用windows程序
- Java调用windows程序
- 字符串的模式匹配中的算法
- Eclipse安装C++ and Java
- fetch方法封装
- Junit测试
- 我是个菜鸟
- 在windows环境下,java程序调用awk不成功,切乱码 。
- android动画
- vue生命周期简介
- Unity3D -- 获取游戏屏幕的宽高
- Python模块:win32com用法详解
- TCP三次握手,四次挥手图解
- parallel d3.v4
- gitlab docker-compose笔记
- Servlet处理响应10