将scala中生成的数据写入文本文件
Writing data generated in scala to a text file
我希望有人能提供帮助,我是 scala 的新手,在将输出写入文本文件时遇到了一些问题。
我有一个数据 table 我已经写了一些代码来一次一行地读取它,做我想让它做的事,现在我需要它把那一行写到文本文件。
例如,我有以下table数据类型
姓名、日期、goX、goY、stopX、stopY
1, 12/01/01, 1166, 2299, 3300, 4477
我的代码获取 goX 和 goY 的第一个字符并创建一个新数字,在本例中为 1.2,对 stopX 和 stopY 执行相同的操作,因此在本例中你得到 3.4
我想在文本文件中得到的内容基本上是这样的:
走,停
1.2, 3.4
并且我希望它经过数百行执行此操作,直到我在文本文件中有一长串开关。
我当前的代码如下,这几乎肯定不是最优雅的解决方案,但它是我的第一个 scala/java 代码:
import scala.io.Source
object FT2 extends App {
for(line<-Source.fromFile("C://Users//Data.csv").getLines){
var array = line.split(",")
val gox = (array(2));
val xStringGo = gox.toString
val goX =xStringGo.dropRight(1|2)
val goy = (array(3));
val yStringGo = goy.toString
val goY = yStringGo.dropRight(1|2)
val goXY = goX+"."+goY
val stopx = (array(4));
val xStringStop = stopx.toString
val stopX =xStringStop.dropRight(1|2)
val stopy = (array(3));
val yStringStop = stopy.toString
val stopY = yStringStop.dropRight(1|2)
val stopXY = stopX+"."+stopY
val GoStop = List(goXY,stopXY)
//This is where I want to print GoStop to a text file
}
非常感谢任何帮助!
应该这样做:
import java.io._
val data = List("everything", "you", "want", "to", "write", "to", "the", "file")
val file = "whatever.txt"
val writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))
for (x <- data) {
writer.write(x + "\n") // however you want to format it
}
writer.close()
但是您可以通过创建一个自动为您关闭内容的方法让它变得更好:
def using[T <: Closeable, R](resource: T)(block: T => R): R = {
try { block(resource) }
finally { resource.close() }
}
using(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))) {
writer =>
for (x <- data) {
writer.write(x + "\n") // however you want to format it
}
}
所以:
using(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.txt")))) {
writer =>
for(line <- io.Source.fromFile("input.txt").getLines) {
writer.write(line + "\n") // however you want to format it
}
}
我希望有人能提供帮助,我是 scala 的新手,在将输出写入文本文件时遇到了一些问题。
我有一个数据 table 我已经写了一些代码来一次一行地读取它,做我想让它做的事,现在我需要它把那一行写到文本文件。
例如,我有以下table数据类型
姓名、日期、goX、goY、stopX、stopY
1, 12/01/01, 1166, 2299, 3300, 4477
我的代码获取 goX 和 goY 的第一个字符并创建一个新数字,在本例中为 1.2,对 stopX 和 stopY 执行相同的操作,因此在本例中你得到 3.4
我想在文本文件中得到的内容基本上是这样的:
走,停
1.2, 3.4
并且我希望它经过数百行执行此操作,直到我在文本文件中有一长串开关。
我当前的代码如下,这几乎肯定不是最优雅的解决方案,但它是我的第一个 scala/java 代码:
import scala.io.Source
object FT2 extends App {
for(line<-Source.fromFile("C://Users//Data.csv").getLines){
var array = line.split(",")
val gox = (array(2));
val xStringGo = gox.toString
val goX =xStringGo.dropRight(1|2)
val goy = (array(3));
val yStringGo = goy.toString
val goY = yStringGo.dropRight(1|2)
val goXY = goX+"."+goY
val stopx = (array(4));
val xStringStop = stopx.toString
val stopX =xStringStop.dropRight(1|2)
val stopy = (array(3));
val yStringStop = stopy.toString
val stopY = yStringStop.dropRight(1|2)
val stopXY = stopX+"."+stopY
val GoStop = List(goXY,stopXY)
//This is where I want to print GoStop to a text file
}
非常感谢任何帮助!
应该这样做:
import java.io._
val data = List("everything", "you", "want", "to", "write", "to", "the", "file")
val file = "whatever.txt"
val writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))
for (x <- data) {
writer.write(x + "\n") // however you want to format it
}
writer.close()
但是您可以通过创建一个自动为您关闭内容的方法让它变得更好:
def using[T <: Closeable, R](resource: T)(block: T => R): R = {
try { block(resource) }
finally { resource.close() }
}
using(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))) {
writer =>
for (x <- data) {
writer.write(x + "\n") // however you want to format it
}
}
所以:
using(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.txt")))) {
writer =>
for(line <- io.Source.fromFile("input.txt").getLines) {
writer.write(line + "\n") // however you want to format it
}
}