ファイル出力
Scala のライブラリでファイル出力しようとAPIを探したらないのです。
scala.io.File のtoFile とうものを期待したのですが、そのままJavaのI/Oを使えということですね。
ということでファイル出力するコードを書いてみました。Javaそのものです。
このサンプルは、ファイルを書き出すことを試すために書いたのでBeanコードの生成は作りこんでいません。
package Hello import scala.collection.mutable.ArrayBuffer import java.io.{File,FileOutputStream,IOException,OutputStreamWriter} object genBean { val GEN_SCALA_SOURCE_CHAR_CODE = "UTF-8" var bean_package = "bean" // BEAN package var output_bean_dir = "" // BEAN output path var SCHEMA = "" var className:String = "" private def outputSourceFile( filepath:String,src:ArrayBuffer[String]) :Boolean = { try { var fos = new FileOutputStream(filepath) var out = new OutputStreamWriter(fos,GEN_SCALA_SOURCE_CHAR_CODE) src.foreach(line => { out.write(line) }) out.close true } catch { case e:IOException => { e.printStackTrace throw e } } false } private def isExistFile( filepath:String) :Boolean = { val file = new File(filepath) file.exists } private def makeDir( schema:String) :Unit = { output_bean_dir = "./src/" + schema +"/"+ output_bean_dir +"/" // BEAN output file path val objFile = new File(output_bean_dir) if(objFile.exists() ){ if(!objFile.canWrite()){ val eMessage = "Can not write the path "+output_bean_dir throw new Exception(eMessage); } return; } var newfile = new File(output_bean_dir) // DIR if (!newfile.mkdirs()){ val eMessage = "Can not make dir" throw new Exception(eMessage) } } var src = new ArrayBuffer[String] val T = "\t" val N = "\n" val DQ = "\"" /** * create soruce code */ def code :Unit = { src.append("import scala.reflect.{BeanProperty,BeanInfo}"+N+N) src.append("@BeanInfo"+N) src.append("class "+ className + "{"+N) src.append(T+"@BeanProperty var RENTALODRID:BigDecimal=null"+N) src.append(T+"@BeanProperty var CUSTOMERID:Integer=null"+N) src.append(T+"@BeanProperty var SALESPRICE:BigDecimal=null"+N) src.append(T+"@BeanProperty var OTHER:String=null"+N) src.append("}"+N) } def genClass(schema:String,_className:String) :Boolean = { className = _className SCHEMA = schema bean_package = SCHEMA + "." + bean_package // BEAN package makeDir(SCHEMA) code val file = "./" + output_bean_dir + "/" +className+".scala" outputSourceFile(file,src) } def main(args : Array[String]) : Unit = { genClass("SCOTT","DEPT") } }
このプログラムを実行すると以下のファイルが書き出されます。
import scala.reflect.{BeanProperty,BeanInfo} @BeanInfo class DEPT{ @BeanProperty var RENTALODRID:BigDecimal=null @BeanProperty var CUSTOMERID:Integer=null @BeanProperty var SALESPRICE:BigDecimal=null @BeanProperty var OTHER:String=null }
コメントを残す
コメントを投稿するにはログインしてください。