window 下通过 source 读文件各种鬼 改用 BufferedReader
用于删除文件中中文
object ChineseDrop extends App {
// val stArray = Array("胜多负少","abadsf","13123123")
// stArray.foreach( word => println(s" $word is ${isChinese(word)} "))
//G:\\fromHD\\勇敢的心\\勇敢的心.srt
if (args.size < 1) {
println(" input file name "); System.exit(-1)
}
val in = new BufferedReader(new InputStreamReader(new FileInputStream(args(0)), "utf-8"))
val writer = new PrintWriter(new File(args(0) + ".eng"))
var str = in.readLine()
while (str != null) {
println(s" $str is ${isChinese(str)} ")
if (!isChinese(str)) writer.println(str)
str = in.readLine()
}
in.close()
writer.close()
// 根据Unicode编码完美的判断中文汉字和符号
private def isChinese(c: Char): Boolean = {
val ub: Character.UnicodeBlock = Character.UnicodeBlock.of(c)
if ((ub eq Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS)
|| (ub eq Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS)
|| (ub eq Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A)
|| (ub eq Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B)
|| (ub eq Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION)
|| (ub eq Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
|| (ub eq Character.UnicodeBlock.GENERAL_PUNCTUATION))
return true
false
}
// 完整的判断中文汉字和符号
def isChinese(strName: String): Boolean = {
strName.toCharArray.foreach(c => if (isChinese(c)) return true)
false
}
}
source 的用法 对于不同字符 可以在 fromfile 后面加入 curry 函数 "utf-8" ....
//文件读取
val file=Source.fromFile("E:\\scalaIO.txt")
for(line <- file.getLines)
{
println(line)
}
file.close
file io
猜你喜欢
转载自lingzhi007.iteye.com/blog/2355438
今日推荐
周排行