我正在编写一个带有swing的Java程序(使用Eclipse IDE)将MIPS代码从八进制转换为二进制表示法,
问题是无论我尝试什么我都看不到要逐行写出的输出文件,我试了很多东西不知道哪里出错了,请帮帮我
在输入文件中我说
F A B 4 F F F F
输出显示为
1111 1010 1011 100 1111 1111 1111 1111
但是当我在NotePad ++等中打开格式化时,请帮助我
当我在记事本中打开时,我希望它看起来格式化 像这样
1111 1010 1011 100
1111 1111 1111 1111
我想它与文本编辑器有关,而不是程序,反正这里是完成工作的方法......
public void convertFile()
{ 尝试{
BufferedReader reader=new BufferedReader(new FileReader(inputFile));
JFileChooser fileSave=new JFileChooser(".");//open chooser with current working directory
fileSave.showSaveDialog(frame);
outputFile=fileSave.getSelectedFile();
BufferedWriter writer=new BufferedWriter(new FileWriter(outputFile));
String line="";
String binaryVal="";
String binaryLine="";
String[] token;
//read from input file and convert and save in output file
while((line=reader.readLine())!=null)
{
token=line.split("\\s+");
binaryVal="";
binaryLine="";
for(int i=0;i<token.length;i++)
{
binaryVal=HexToBinaryConverter.hexToBin(token[i]);
//System.out.println(binaryVal);
binaryLine=(binaryLine+binaryVal+" ");
//System.out.println(binaryLine);
}//all tokens in a line have been processed ,now write to file
System.out.println(binaryLine);
writer.write(binaryLine+"\n");
}
//entire file has been processed now close everthing
writer.close();
reader.close();
}
catch(Exception e)
{
System.out.println("Some exception in FIle IO");
JOptionPane.showMessageDialog(frame,
"Invalid Hex Numbers.",
"Inane warning",
JOptionPane.WARNING_MESSAGE);
}
}
答案 0 :(得分:1)
我建议你使用PrintWriter。它比附加\n
更有效,它将使用特定于平台的回车。
try (PrintWriter pw = new PrintWriter(filename)) {
// do something
pw.println(binaryLine);
// something else.
} // close when done.
println
将在Windows上使用\r\n
,在Linux / MacOSX上使用\n
。
我的问题是在UNIX中使用\ r \ n渲染我的jar程序或可执行文件是不可用的吗?
您的程序将会运行,但您将在您撰写的每一行文本的末尾获得^M
,\r
。
答案 1 :(得分:1)
Java意味着跨平台。正确使用标准库,你不会有这样的头痛。
答案 2 :(得分:0)
Windows使用CRLF(回车换行)作为行尾,标记为\r\n
。 Unices(和其他POSIX投诉操作系统)仅使用线路费用字符:\n
。
如果您的应用程序有或可能有任何操作Windows,建议始终使用\r\n
。
当然,还有一些隐藏这些操作系统特定细微差别的工具(类)。