Android 写文件生成器的时候换行请用\r\n

前言

最近在学习研究写文件生成器,中间遇到一个问题。
就是,在生成了Activity之后,在Manifest文件中增加一个的标签,如果我要删除文件,也要从Manifest中清除这个标签。
做法很简单,就是读取清单文件,然后往Application标签中插入一段新增的Activity标签。如果要删除,就读取清单文件,然后把里面这段Activity标签给移除掉。
具体代码描述就是:
1、生成的时候,读取file文件内容,然后indexOf Application标签,然后substring(0 - index) + activity标签代码 + sub( index - length),然后再写入,这样就增加了代码
2、删除的时候,读取file文件内容,然后直接replace 原来那段Activity标签代码为”” 空字符串

问题

逻辑很简单,但是却发现无论如何都没有达到replace的效果,测试contains,也依旧返回false,百思不得其解,调试N次,检查代码以及Activity标签代码,都无误。Android studio用对比工具进行比对也没有任何问题一模一样
对比1.png
最终无奈,只得自己亲自比对string(其实是比如charsequence,一个字符一个字符比对),这才发现了端倪
对比2.png
原来是Android studio里面的所有文件的回车并不是单单一个”\n”而是”\r\n”
而我们如果是单单从文件里面copy一段代码出来,然后直接放到string对象里面,转化后的换行就是\n
copy.png
所以这种情况,你需要手动加一个\r才能解决问题

总结

这里再说一下\r 和\n的区别

\r 回车是将光标移到一行的前面,
n 是移到下一行,相当于换行。

出个简单的题:

        System.out.print("第一行")
        System.out.print("第1段\r")
        System.out.print("1")
        System.out.print("第二行")
        System.out.print("第2段\r\n")
        System.out.print("第三行")

打印出来是什么?
直接说答案

1第二行第2段
第三行

对,你没有看错。
出现这种效果的原因是,/r是回到这行的前面,那么“第二行第二段”就从第一行开始,覆盖了原来的第一行了。
所以,请大家以后记住,对文件的操作,如果是直接copy的,那么记得回车是\r\n

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值