`

不要硬编码'\n' 和 '\r'作为换行符

阅读更多

一、问题现象: 
   下面的代码主要用于将业务数据输出至文件中供接口调用: 
BufferedWriter out = null; 
try 

   out = new BufferedWriter(new FileWriter(localFilePath + fileName, isAddLog)); 
   …… 
   …… 
   if(isImepServerRunning) 
   { 
      out.write("004|" + hostName + "|" + ip + "|0002|imep进程up|0|" + performTime + “\r\n”); 
   } 
   else 
   { 
      out.write("004|" + hostName + "|" + ip + "|0002|imep进程down|1|" + performTime + “\r\n”); 
   } 

   …… 
   此时出现了问题:结果文件中的数据换行在unix系统下不正确 

二、解决方案: 
1.由于unix和windows系统参数的差别,故不使用硬编码进行换行,通过使用System.getProperties("line.separator");获取换行符 
2.通过使用out.newLine();实现 

三、问题总结: 
由该问题可延伸至操作系统常用参数的差别,如: 
line.separator(windows:"\r\n";unix:"\n"); 
file.separator(windows:"\";unix:"/"); 
path.separator(windows:";";unix:":"); 

分享到:
评论

相关推荐

    php去除字符串换行符示例分享

    使用`PHP_EOL`可以避免硬编码特定系统的换行符,提高代码的可移植性和可维护性。 示例代码: ```php $str = str_replace(PHP_EOL, '', $str); ?> ``` 这段代码用`PHP_EOL`替换字符串中的换行符,无论在哪个操作...

    php中的PHP_EOL换行符详细解析

    在编写跨平台的PHP代码时,使用`PHP_EOL`而不是硬编码特定的换行符(如`\n`或`\r\n`),可以确保你的代码在不同操作系统之间保持一致的行为。这在处理文件读写、日志记录或者打印多行文本等场景时特别有用,因为这样...

    浅析Ruby的源代码布局及其编程风格

    使用 UTF-8 作为源文件编码。  每个缩进级别使用两个 spaces... 使用 Unix-风格 换行符。(*BSD/Solaris/Linux/OSX 用户被为默认涵盖,Windows 用户必须特别小心.) \n是换行,英文是LineFeed,ASCII码是0xA。 \r是回

    ftp一句话下载payload(第四十课).docx

    在ASCII模式下,FTP服务器会自动处理文本文件中的换行符,将其转换为特定的操作系统格式(例如,Unix系统使用`\n`作为换行符,而Windows系统则使用`\r\n`)。这种模式不适合传输非文本文件,因为可能导致文件损坏。 ...

    C# 字符串多行显示/文本换行以textbox为例讲解

    总的来说,要在C#中实现字符串的多行显示和文本换行,关键在于设置TextBox的`Multiline`属性为`true`,以及使用`System.Environment.NewLine`作为跨平台的换行符。同时,通过合理的字符串拼接和条件判断,可以实现...

    2021-2022计算机二级等级考试试题及答案No.18624.docx

    23. BufferedWriter操作:BufferedWriter的newLine()方法用于写入一个换行符。 24. 关系运算:在关系数据库中,R×S表示R和S的笛卡尔积,而不是交集、并集或除法操作。 25. 可执行程序:计算机能直接执行的是机器...

    android客户端_PC服务端

    在这里,用户输入的文字(`EditText`中的内容)被添加了一个换行符`\r\n`,然后通过`println`方法发送到服务器。 虽然这段代码没有显示服务器接收和响应的代码,但通常服务器端会有一个类似的逻辑,监听指定的端口...

    C语言配置文件读写.zip

    // 移除末尾换行符 i++; } } } fclose(fp); // 打印读取的配置项 for (int j = 0; j ; j++) { printf("%s = %s\n", config[j].key, config[j].value); } return 0; } ``` 对于配置文件的写入,我们...

    C#编程和Visual Studio使用技巧(上)

    在编写跨平台的代码时,使用`Environment.NewLine`替代硬编码的换行符(如`\n`或`\r\n`),可以确保在不同操作系统上的输出正确。 2. **命名空间别名**: 长的命名空间可能导致代码可读性降低,这时可以使用`using`...

    rar压缩软件.rar

    含文件掩码和以反斜线结尾,即使没有指定 -r 开关,目录和子目录的 所有内容都会被添加到压缩文件中。 下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a ...

    linux基础总结

    - `paste -d '+' a b`: 使用指定的字符(如`+`)作为分隔符。 - `paste -s a`: 将多行数据合并成一行,使用制表符分隔。 5. **文件搜索与信息提取** - `locate 字符串`: 快速搜索文件系统中的文件。 - `wc -l ...

    如何在textarea文本输入区内实现换行

    这是因为HTML会把它们当作普通的文本显示出来,而不是作为换行符处理。 要实现在`<textarea>`中显示换行,可以使用以下几种方法: 1. **HTML实体**:在HTML中,我们可以使用HTML实体来表示特殊字符。对于换行,...

    在 Android 上通过模拟 HTTP multipart/form-data 请求协议信息实现图片上传

    这种格式的数据由一系列的部分组成,每个部分之间用分隔符(通常是两个换行符--)区分,并且每个部分都有一个Content-Type头来标识其类型。对于图片上传,我们通常会有一个"image/jpeg"或"image/png"的Content-Type...

    2019051420运维常用linux命令.pdf

    - **示例**: `tail -n 10 myfile.txt` 显示`myfile.txt`的最后10行。 - **实时监控日志文件**: `tail -f 日志文件` - **示例**: `tail -f /var/log/messages` 实时监控系统日志文件。 **9. 文件类型检查** - **...

    linux命令大全

    - `−0` 或 `−−null`:接受NUL字符作为输入行的结束符。 - `−a` 或 `−−reset-access-time`:重置文件访问时间。 - `−A` 或 `−−append`:将文件追加到现有的备份文件中,该备份文件必须位于磁盘上。 - `−b` ...

    java导出csv方法实现讲解

    // 添加逗号分隔,最后一列添加换行符 if (i != (Column.length - 1)) { sb.append(fieldValue + ","); } else { sb.append(fieldValue + "\r\n"); } break; } } } } catch (Exception e) { e....

    很实用的Linux 系统运维常用命令及常识(超实用)

    - `dos2unix`/`unix2dos`:转换文本文件的换行符,适应不同操作系统。 - `iconv`:转换文件编码,例如从GBK转为UTF-8。 2. **文件操作**: - `md5sum`:计算文件的MD5校验值,用于验证文件完整性。 - `ln`:...

Global site tag (gtag.js) - Google Analytics