首页 > 大数据 > Hadoop > 用Scala将指定格式的数据写入到文件
新建FileOps对象:
package com.ruozedata.day3
import java.io.{File,PrintWriter}
import java.text.SimpleDateFormat
import java.util.{Calendar, Date}
//import scala.io.Source
object FileOps {
def main(args: Array[String]): Unit = {
//文件读取
// val file = Source.fromFile("D:\\software\\data\\scalaIO.txt")
// file.foreach(print)
// file.close()getTracffic()
/**
* 文件格式:
* domain tracffic time
* www.ruozedata.com 64447 [2018-07-17 07:39:57]
* www.ruozedata.com 13781 [2018-07-11 06:52:41]
*/
//文件写入
//加载文件D:\software\data\ScalaWriter.txt 如果没有会创建
val writer = new PrintWriter(new File("D:\\software\\data\\ScalaWriter.txt"))
writer.flush(); //清空文件内容
//输入标题字段:domain tracffic time
//writer.println("domain\ttracffic\ttime")
//定义网址的数组
val arr = Array("www.ruozedata.com","www.zhibo8.com","www.dongqiudi.com")
//定义26个字母的数组 用于随机写入tracffic字段的值(非数字)
val arr2 = Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
//定义一个数字的集合
val arr3 = (10000 to 99999).toArray
//用于接收tracffic值的变量
var ele = ""
for(i <- 1 until 100000){
//如果 i为偶数就设置ele的值为数字,否则设置为字母
ele = if (i%10==0) arr2((new util.Random).nextInt(26)) else arr3((new util.Random).nextInt(arr3.length)).toString()
//将内容写入到文件里面
writer.println(arr((new util.Random).nextInt(3))+"\t"+ele+"\t"+(getNowDate()))
}
//关闭写入流
writer.close()
//获取动态时间的方法,格式:yyyy-MM-dd HH:mm:ss
def getNowDate(): String = {
// 动态获取日
var days = (new util.Random).nextInt(getNowMonthEnd()).toString() ;
// 动态获取小时
var hours = (new util.Random).nextInt(23).toString() ;
// 动态获取分钟
var minutes = (new util.Random).nextInt(59).toString() ;
// 动态获取秒
var seconds = (new util.Random).nextInt(59).toString() ;
//判断1-9的日需要在前面添加0
if (days == "0"){ // 如果获取的日为0,则需要手动处理成其他日,我这里处理成01
days = "01"
}else{
if ((days.length()) == 1) {
days = "0"+days
}
}
//判断1-9的日需要在前面添加0
hours = if (hours.length() == 1) "0"+hours else hours
//判断1-9的日需要在前面添加0
minutes = if (minutes.length() == 1) "0"+minutes else minutes
//判断1-9的日需要在前面添加0
seconds = if (seconds.length() == 1) "0"+seconds else seconds
//获取当前日期
val now: Date = new Date()
val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM")
//格式化当前日期 格式:yyyy-MM
val date = dateFormat.format(now)
//返回动态日期格式:[yyyy-MM-dd HH:mm:ss]
return "["+date+"-"+days+" "+hours+":"+minutes+":"+seconds+"]"
}
//获取当前月的最后一天的方法
def getNowMonthEnd():Int={
var period:String=""
var cal:Calendar =Calendar.getInstance();
var df:SimpleDateFormat = new SimpleDateFormat("dd");
cal.set(Calendar.DATE, 1)
cal.roll(Calendar.DATE,-1)
period=df.format(cal.getTime())//本月最后一天
Integer.parseInt(period)
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29609890/viewspace-2168576/ ,如需转载,请注明出处,否则将追究法律责任。