Man*_*anu 51 java line-endings eol carriage-return linefeed
我使用Java代码在Unix环境中创建了一个文本文件.
对于写文本文件我使用java.io.FileWriter和BufferedWriter.并且对于每行之后的换行我使用bw.newLine()方法(在哪里bw是对象BufferedWriter).
我通过从Unix环境本身附加邮件(使用Unix命令自动化)发送该文本文件.
我的问题是,在我从Windows系统中的邮件下载文本文件后,如果我打开该文本文件,则数据未正确对齐.newline()性格不起作用,我想是的.
如果我在Windows环境中打开文本文件,我想要在Unix环境中使用相同的文本文件对齐.
我该如何解决这个问题?
下面的Java代码供您参考(在Unix环境中运行):
File f = new File(strFileGenLoc);
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));
rs = stmt.executeQuery("select * from jpdata");
while ( rs.next() ) {
bw.write(rs.getString(1)==null? "":rs.getString(1));
bw.newLine();
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*s B 61
Java只知道它当前运行的平台,因此它只能在该平台上为您提供与平台相关的输出(使用bw.newLine()).您在Windows系统上打开它的事实意味着您必须在使用之前转换文件(使用您编写的内容或使用unix2dos之类的程序),或者您必须输出带有Windows格式的文件回车符它最初是在你的Java程序中.因此,如果您知道该文件将始终在Windows机器上打开,则必须输出
bw.write(rs.getString(1)==null? "":rs.getString(1));
bw.write("\r\n");
Run Code Online (Sandbox Code Playgroud)
值得注意的是,如果它只是您正在使用的纯文本,您将无法输出在两个平台上看起来都正确的文件,如果是电子邮件,您可能需要考虑使用html,如果它是xml,则可能需要考虑使用xml是数据.或者,您可能需要某种类型的客户端来读取数据,然后将其格式化为查看者正在使用的平台.
该方法newLine()确保添加与平台兼容的新行(0Dh 0Ah对于DOS,0Dh对于较旧的Mac,0Ah对于Unix/Linux).Java无法知道您要在哪个平台上发送文本.邮件发送实体应该对此转换进行处理.
| 归档时间: |
|
| 查看次数: |
224777 次 |
| 最近记录: |