2019-11-15 20:46:49 yezi1238 阅读数 31

Windows和Linux的文件分隔符、换行符问题

一般来说,大部分java开发是在Windows上开发,而生产环境下在Linux中运行

文件分隔符

  • Windows文件分隔符默认为"\",由于是转义符,通常开发中写为"\\",注意,Windows也可以识别"/"分隔符

  • Linux文件分隔符默认为"/",且只能识别这种

所以,在日常开发中文件分隔符建议写为"/",推荐使用File.separator或者File.separatorChar

换行符

CR回车 LF换行

  • Windows/Dos CRLF \r\n
  • Linux/Unix LF \n
  • MacOS CR \r

java开发

Linux只能识别\n换行符,\r会被当做一个字符,而Windows下默认换行符为\r\n,但\n也可以。

所以当使用Java输出数据到文件中时推荐使用\n

shell开发

使用Notepad++编辑sh文件,如下图

在这里插入图片描述

Notepad++显示换行符:视图 --> 显示符号 --> 显示行尾符

将脚本上传到Linux环境中执行,将会报如下错误

在这里插入图片描述

解决方法1:

在Notepad++操作:编辑 --> 文档格式转换 --> 转为UNIX格式

此时换行符会变为LF,上传Linux环境执行成功

解决方法2:

在Linux环境中使用vi打开:

  • 输入set ff命令显示fileformat=dos
  • 输入set ff=unix命令确认,再输入set ff命令显示fileformat=unix
  • 输入wq保存退出

此时执行脚本成功

解决方法3:

在Linux环境中执行:sed -i ‘s/\r$//’ test.sh (相当于将\r全部替换掉)

在这里插入图片描述

idea开发

idea设置默认文件换行符

在这里插入图片描述

git版本控制

使用git做版本控制时注意,默认情况下,无论本地文件换行符是什么,在git服务器中存储都是LF,但是检出时都会变成CRLF

解决方法

打开git bash,设置core.autocrlf和core.safecrlf,建议设置autocrlf为input,safecrlf为warn。

下面为参数说明,–global表示全局设置

autocrlf

提交时转换为LF,检出时转换为CRLF(默认)

git config --global core.autocrlf true

提交时转换为LF,检出时不转换(推荐)

git config --global core.autocrlf input

提交检出均不转换

git config --global core.autocrlf false

safecrlf

拒绝提交包含混合换行符的文件

git config --global core.safecrlf true

允许提交包含混合换行符的文件(默认)

git config --global core.safecrlf false

提交包含混合换行符的文件时给出警告(推荐)

git config --global core.safecrlf warn

注意:以上设置只针对个人电脑上的git环境,需要每个开发人员都统一设置

2019-06-28 19:22:02 dejunyang 阅读数 145

Linux 大文件分割

按行分割

语法:

$ split -l 200 [大文件名称] [文件前缀]

示例: 按每 3 行分割 test.txt 文件,分隔后的前缀为 split_test_,分割后的文件结尾以 0 开始

# split -l 3 -d test.txt split_test_
# ll | grep split_test
输出结果为:
-rw-r--r-- 1 root root      39 6月  28 19:10 split_test_00
-rw-r--r-- 1 root root      54 6月  28 19:10 split_test_01
-rw-r--r-- 1 root root      94 6月  28 19:10 split_test_02
-rw-r--r-- 1 root root     218 6月  28 19:10 split_test_03
-rw-r--r-- 1 root root      62 6月  28 19:10 split_test_04

-l: 是 L 的小写,表示行数;
-d: 表示以数字结尾;
-split_test_: 表示分割后的文件前缀

按照大小分隔

语法:

split -b [分割大小] [大文件名称] [前缀]

示例:按每 10M 分割 test.txt 文件,分隔后的前缀为 split_test_,分割后的文件结尾以 0 开始

split -b 10m -d test.txt split_test_

将分割后的文件进行合并

采用 cat 命令对分割后的文件进行合并

cat split_test_* > merge_test.txt
2017-03-22 16:38:49 young_so_nice 阅读数 777

Linux文件路径分隔符为 / ,windows的文件路径分隔符为 \ ,在开发项目过程中不确定用户使用何种操作系统,就需要自动适配路径。

目前已知Java提供两种方法获取文件路径分割符:
File.separator
System.getProperty(“file.separator”)

public class FilePathUtil {  
    public static final String FILE_SEPARATOR = System.getProperty("file.separator");  
    //public static final String FILE_SEPARATOR = File.separator;  

    public static String getRealFilePath(String path) {  
        return path.replace("/", FILE_SEPARATOR).replace("\\", FILE_SEPARATOR);  
    }  

    public static String getHttpURLPath(String path) {  
        return path.replace("\\", "/");  
    }  
}  

Java文件分隔符

阅读数 802

没有更多推荐了,返回首页