回车与换行

一、是什么

在Linux和MacOS中行分隔符为"\n",在Windows中为"\r\n"。至于为什么会造成这个差异,可以看下参考文章链接。下面说说这两者究竟是什么

  1. 回车:Carriage Return(CR) “\r”,表示将光标返回至所在行头部
  2. 换行:Line Feed(LF) “\n”,表示将光标置入下一行

二、为什么

“\n"作为换行符很好理解,面对很长一行文字时计算机读取能够不费吹灰之力,但人类读取就非常费力了。”\n"可以将文字换行切分。

那么“\r"呢?我什么时候才需要将光标返回所在行头部呢?这样不会造成覆盖吗?平常我们在用包管理命令下载软件时,经常能够看到在某一行持续不断地打印下载进度,在我搜索这个是怎么实现的时候,发现"\r"就是实现方式之一。

三、怎么实现

下面用一段Java代码模拟一下

import java.util.concurrent.TimeUnit;

public class PrintProgressTest {
    public static void main(String[] args) throws InterruptedException {
        int totalLen = 50;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < totalLen; i++) {
            sb.append("#");
            System.out.print("\r" + sb.toString());
            for (int j = 0; j < totalLen-sb.length(); j++) {
                System.out.print(" ");
            }
            System.out.printf("|%f%%",(sb.length()*1.0/totalLen)*100);
            TimeUnit.MILLISECONDS.sleep(200);
        }
    }
}

四、参考

【回车和换行】http://www.ruanyifeng.com/blog/2006/04/post_213.html

展开阅读全文

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

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读