" \ n"不在NotePad中使用Buffered writer?

时间:2015-02-04 15:09:35

标签: java newline notepad bufferedwriter

我正在编写一个带有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);
}

}

3 个答案:

答案 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意味着跨平台。正确使用标准库,你不会有这样的头痛。

退房:System.lineSeparator()

答案 2 :(得分:0)

Windows使用CRLF(回车换行)作为行尾,标记为\r\n。 Unices(和其他POSIX投诉操作系统)仅使用线路费用字符:\n

如果您的应用程序有或可能有任何操作Windows,建议始终使用\r\n

当然,还有一些隐藏这些操作系统特定细微差别的工具(类)。