0

我正在使用 Java 生成文件,但在不同的查看器中打开时无法正确格式化。给出不同输出的程序是WordPadNotePad

控制台中程序的输出格式都很好。此外,当我查看其中的文件时,WordPad它的格式也很好。但是当我打开文件时NotePad,一切都混乱了。

它在记事本中看起来非常糟糕,我讨厌最终用户在记事本中打开它看到一团糟。

有没有办法在 Java 中正确格式化文本,以便任何文本阅读器都能按照我的预期呈现它?

String.format()用来格式化我的字符串。

编辑:这是我用来写出信息的一些核心代码。

private void retrieveOrderInfo(ArrayList<String> order) {
    int row = orderTable.getRowCount();
    String descr[] = new String[row];
    double price[] = new double[row];
    String info;
    readOrderTable(descr, price);
    for (int i = 0; i < row; i++) {
        info = String.format(" %-45s %-20.1f ", descr[i], price[i]);
        order.add(info);
    }
}

private void writeString(String path, String info, boolean line) {
    DataRW write = new DataRW();
    write.writeFileExternal(path, info, line);
}

这是在我的 DataRW 课程中。

public void writeFileExternal(String fileName, String info, boolean line) {
    BufferedWriter bwriter = null;
    try {
        FileWriter fwriter = new FileWriter(fileName, true);
        bwriter = new BufferedWriter(fwriter);
        bwriter.write(info);
        if (line) {
            bwriter.newLine();
        }
        bwriter.flush();
    } catch (IOException e) {
        //e.printStackTrace();
        //System.out.println("Could note write to " + fileName);
        errorMessageNotify("writeexternalfile", fileName);
    } finally {
        if (bwriter != null) {
            try {
                bwriter.close();
            } catch (IOException e) {
                //Just ignore if couldnt close
            }
        }
    }
}

所以我得到了信息,然后用这些方法调用把它写出来。

编辑:图片链接 http://i1248.photobucket.com/albums/hh489/EberronBruce/NotepadDemo_zpsangaprji.jpg

http://i1248.photobucket.com/albums/hh489/EberronBruce/wordpad_zpscbu0adkb.jpg

以下是图片的链接来描述我的意思。我没有足够的声誉点来直接发布图像。

我真的很感激所有的帮助。很长时间以来,我一直在努力解决这个问题。我尝试使用 \t 并调整格式以使其看起来正确,但是一旦我让它在记事本下看起来正确,它就会在写字板、MS Word 和 FireFox 中消失。

4

1 回答 1

1

我猜测生成的代码使用 UNIX 换行符。写字板在 UNIX 换行符处中断。记事本没有。

如果您想为您的操作系统正确中断,请使用System.getProperty("line.separator")

编辑:现在我们有了屏幕截图,我可以说你的问题出在记事本上。将字体更改为固定宽度的字体,例如 Courier,您的数据将正确对齐。

于 2015-04-18T06:27:11.037 回答