我有以下计划:
import java.time.format.DateTimeFormatter
import java.time.LocalDate
def firstLine = this.args[4]
def filteredOutput
String file = this.args[0]
String outputFile = file + "_filtered.csv"
def pathInput = "../input/" + file
def pathOutput = "../output/" + outputFile
String td = this.args[1]
def keyField = this.args[2]
def path = this.args[3]
final FMT = DateTimeFormatter.ofPattern('dd.MM.yyyy')
def lineCounter = 0
//Integer.parseInt(keyField)
//println keyField
def targetDate = LocalDate.parse(td, FMT)
def test = new File(pathInput)
def filtered = new File(pathOutput)
filteredOutput = filtered.newPrintWriter()
if (firstLine>lineCounter) {
lineCounter = lineCounter +1
}
else {
test.filterLine(filteredOutput) { line ->
def parts = line.split(';')
def lineDate = LocalDate.parse(parts[Integer.parseInt(keyField)], FMT)
lineDate >= targetDate
}
}
println pathInput
println pathOutput
它读取一个CSV文件,并删除所有日期早于我在参数中给予的日期的行。我读取的文件有一个标题行,其中列的名称。我想在第二行开始过滤,或者更好地基于一个变量,以更灵活。正如你所看到的,我试图捕捉这种情况下,如果否则,并计数到我想跳过的行,但没有'I don“我脑子里的计划并没有完全实现。
我目前的程式码可以做到吗?
1条答案
按热度按时间7bsow1i61#
我找到了解决方案。我删除了解析targetDate的步骤。因为我想在新文件中1:1复制没有日期的行,所以这样做更好。有日期的行被选中并删除,而没有日期的行将保持不变。