IDEA报'\ufeff'错误
程序员文章站
2022-06-13 18:02:21
...
导致这个错误的原因基本都是导入Eclipse的项目所致。网上很多的方法是用各种高级Notepad来转编码的方法,但是我认为这个一个个转,非常非常非常愚蠢,实在是太浪费时间了。
依我的观察发现,这个'\ufeff'只出现在文件的第一行,package的前面,这个字符并不显示,也看不见,但是它真实存在!因此处理方法很简单,删除文件开始第一个字符就行了,根本不用转编码格式!!程序猿用程序猿的方法,遍历包中的所有文件,删第一个字符就行了,何必浪费时间一个个改呢?
上代码,代码是Kotlin,为了简洁,并没有上递归遍历,只是单纯修改一个包下的所有文件,有兴趣的可以加上递归方法。
val fileList = File(foldPath)
fileList.listFiles().forEach {
println("file name is ${it.name}")
var readContent = it.readContent { }
if(readContent.first()=='p'){
}else{
readContent=readContent.substring(1,readContent.length)
it.writeText(readContent)
}
}
其中readContent是我自己写的扩展方法,writeText是Kotlin自己的扩展方法
以下是readContent扩展方法:
fun File.readContent(noFound: () -> Unit = {}): String {
val readSize = this.length().toInt()
if (!this.exists()) {
fileNotFound()
noFound()
return ""
}
val fileInputStream = FileInputStream(this)
val byteArray = ByteArray(readSize)
val stringBuffer = StringBuffer()
val bufferedInputStream = BufferedInputStream(fileInputStream)
bufferedInputStream.buffered(64 * 1024)
while (true) {
val read = bufferedInputStream.read(byteArray)
println("读取的长度为$read")
if (read == -1) {
break
}
stringBuffer.append(String(byteArray, Charset.forName("UTF-8")))
}
bufferedInputStream.close()
fileInputStream.close()
return stringBuffer.toString()
}
上一篇: 前后端分离项目线上部署
推荐阅读
-
ant编译java报“非法字符: \65279 ”错误的解决方法 z
-
Oracle错误日志:11gR2 RAC升级后启动报ORA-01565,ORA-17503,ORA-12547
-
连接数据库时,报HTTP500错误
-
连接mysql报1045错误怎么办
-
iOS 报clang: error: no input files错误的解决方法
-
iOS 报clang: error: no input files错误的解决方法
-
spring boot启动时mybatis报循环依赖的错误(推荐)
-
Android studio报: java.lang.ExceptionInInitializerError 错误
-
Android Studio 报Integer types not allowed错误
-
SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法