本篇内容主要讲解“如何用Scala将指定格式的数据写入到文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用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.com64447 [2018-07-17 07:39:57]
* www.ruozedata.com13781[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)
}
}
}
到此,相信大家对“如何用Scala将指定格式的数据写入到文件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。