我想用java写一个bat文件,代码如下:
import java.io.File;
import java.io.FileOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class Batwrite{
static void WriteFile(String bat){
try{
File FileName=new File("f://bat//b.bat");
FileOutputStream fileOut=new FileOutputStream(FileName);
DataOutputStream fou=new DataOutputStream(fileOut);
fou.writeChars(bat);
fou.close();
}catch(IOException e){
System.out.println("文件错误");
}
}
public static void main(String args[]){
String str="ping 192.168.0.1 >f:/bat/b.txt";
WriteFile(str);
try {
String command = "cmd.exe /c"+"start /min f:\\bat//b.bat";
Process child =
Runtime.getRuntime().exec(command);
} catch (IOException e){
System.out.println("文件错误");
}
}
}
程序可以编译运行,在f:\bat\下面也生成了一个b.bat文件,可以并没有生成b.txt文件,直接运行b.bat也没有反应,选择编辑后,发现b.bat里面的内容为:
“p i n g 1 9 2 . 1 6 8 . 0 . 1 > f : / b a t / b . t x t”
每一个字符后面都加了一个空格,所以就不能被执行。请问大家应该怎么写这个程序才能正确的执行呢?
參考答案:你是不是在生成程序时选择的是Unicode编码?Unicode是16位的,英文和数字是一个字母一个字节,而Unicode是双字节的,当然写入到文件中后每个字母后面有一个空格了。
如果你用的编程工具,则应该修改它的Charset设置参数这默认或UTF-8.当然具体哪个地方,各种编程工程所在的位置不同。
如果你用的是文本编辑器的话,我相信不会出现这样的问题。
如果不幸言中是后者的话,可以用String.getByte()的方法,一次读入,写入一个Byte,应该不会出错了。