File write ファイル出力

Posted 2010年12月23日 by

ファイル出力

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
}

Post Details

  • Post Title: File write ファイル出力
  • Author: admin
  • Filed As: Java, Scala
  • Tags:
  • You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

コメントを残す