使用 better.files 在与另一个文件相同的目录中创建新文件的推荐习惯用法是什么?
What is the recommended idiom for creating a new file in the same directory as another with better.files?
我很喜欢我的 Scala 脚本中的“better.files
”库,其中一项常见操作(对我而言)是在与现有文件相同的目录中创建一个新文件。我的第一次尝试被证明是相当冗长和丑陋的,所以我想知道是否有更好的成语。
具体来说,这是一个 bash 脚本,相当于我想在 scala 中执行的操作:
#!/bin/bash
SRC="$HOME/Downloads/some-file.txt"
SRCDIR=$(dirname "$SRC")
DST="$SRCDIR/another-file.txt"
echo "hello!" > "$DST"
为了使用 better.files
库完成同样的事情,这是我目前所拥有的:
#!/usr/bin/env scalaRunner
import better.files._
import better.files.Dsl._
import java.io.{File => JFile}
val SRC = File.home/"Downloads"/"some-file.txt"
val SRCDIR = SRC.parent
val DST = new JFile(SRCDIR.toJava,"another-file.txt").toScala
DST.overwrite("hello!\n")
它几乎与 bash 脚本一样简洁易读,但如果可以隐藏与 java.io.File 之间的转换就更好了。当然,我总是可以创建隐式转换器来做到这一点,但也许有更好的选择。
尽管显式转换没有任何问题,但如果已经有一种不那么冗长的等效方法,我主要是想避免这样做。
对于任何想要试验的人来说,假设 $SRC
文件已经存在等,以上两个脚本都应该可以按原样执行。可以在此处找到有效的“scalaRunner
”脚本:
它假定 better-files jar 位于您的类路径中,如链接答案中所述。
这个怎么样:
val src = File.home/"Downloads"/"betterfiles" / "document.jpg"
val srcDir = src.parent
val dst: File = srcDir.createChild("another-file.txt")
dst.overwrite("hello!\n")
我很喜欢我的 Scala 脚本中的“better.files
”库,其中一项常见操作(对我而言)是在与现有文件相同的目录中创建一个新文件。我的第一次尝试被证明是相当冗长和丑陋的,所以我想知道是否有更好的成语。
具体来说,这是一个 bash 脚本,相当于我想在 scala 中执行的操作:
#!/bin/bash
SRC="$HOME/Downloads/some-file.txt"
SRCDIR=$(dirname "$SRC")
DST="$SRCDIR/another-file.txt"
echo "hello!" > "$DST"
为了使用 better.files
库完成同样的事情,这是我目前所拥有的:
#!/usr/bin/env scalaRunner
import better.files._
import better.files.Dsl._
import java.io.{File => JFile}
val SRC = File.home/"Downloads"/"some-file.txt"
val SRCDIR = SRC.parent
val DST = new JFile(SRCDIR.toJava,"another-file.txt").toScala
DST.overwrite("hello!\n")
它几乎与 bash 脚本一样简洁易读,但如果可以隐藏与 java.io.File 之间的转换就更好了。当然,我总是可以创建隐式转换器来做到这一点,但也许有更好的选择。
尽管显式转换没有任何问题,但如果已经有一种不那么冗长的等效方法,我主要是想避免这样做。
对于任何想要试验的人来说,假设 $SRC
文件已经存在等,以上两个脚本都应该可以按原样执行。可以在此处找到有效的“scalaRunner
”脚本:
它假定 better-files jar 位于您的类路径中,如链接答案中所述。
这个怎么样:
val src = File.home/"Downloads"/"betterfiles" / "document.jpg"
val srcDir = src.parent
val dst: File = srcDir.createChild("another-file.txt")
dst.overwrite("hello!\n")