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


猜你喜欢

转载自lingzhi007.iteye.com/blog/2355438