各路好手,小弟项目中遇到如下问题,急需各位大侠出手相助,现将问题描述如下:
小弟的项目是用Java开发的,IDE是 Mac OS 下的 Eclipse(Linux/Unix下也是相同的问题)。程序中需调用系统的 shell 命令,例如:
String line;
String[] cmd = new String[3];
cmd[0] = "/bin/sh";
cmd[1] = "-c";
cmd[2] = "du -sh /Users/测试"
Process proc = Runtime.getRuntime.exec(cmd);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader (is);
while ((line = br.readLine ()) != null) {
System.out.println(line);
}
echo "测试" | native2ascii
\u6d4b\u8bd5
cmd[2] = "du -sh /tmp/\u6d4b\u8bd5" ;
这样看看?
cmd[0]="LANG=zh_CN.UTF-8";
cmd[1]="/bin/sh";
.......
其中LANG是你正确的语言环境,
echo $LANG看看是什么, 替换一下
太不优雅了,给你写了一段跨平台的
[code="java"]static long totalSize = 0;
public static void visit(File f) {
totalSize += f.length();
}
public static void walk(File f) {
visit(f);
if (f.isDirectory()) {
String list[] = f.list();
for (int i = 0; i < list.length; i++)
walk(new File(f, list[i]));
}
}
//测试
public static void main(String args[]) {
walk(new File("/tmp/cc"));
System.out.println("totalSize=" + totalSize);
}[/code]