file io

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值