1. ホーム
  2. scala

[解決済み] Scalaでファイルに書き込むには?

2022-04-26 08:18:21

質問

読書には、便利な抽象表現があります。 Source . テキストファイルに行を書き込むにはどうすればよいのでしょうか?

どのように解決するのですか?

2019年(8年後)を編集する。 スカラIO は、あったとしてもあまり活発ではありません。 李昊毅 自身の図書館を提案 lihaoyi/os-lib ということです。 以下に紹介します。 .

2019年6月 グザヴィエ・ギホ で言及しています。 回答 図書館 Using 自動的なリソース管理を行うためのユーティリティである。


編集(2011年9月): 以降 エドゥアルド・コスタ がScala2.9について質問しています。 リック-777 というコメント scalax.IO のコミット履歴 は2009年半ば以降、ほとんど存在しない...。

スカラIO は場所を変えました。 GitHubレポ から ジェシー・アイヒャー (また SOについて ):

Scala IOアンブレラプロジェクトは、IOの異なる側面や拡張のためのいくつかのサブプロジェクトで構成されています。

Scala IOの主なコンポーネントは2つあります。

  • コア - Coreは主に、任意のソースやシンクとのデータの読み書きを扱います。中心となる特性は Input , OutputSeekable であり、コアAPIを提供する。

    その他の重要なクラスは Resource , ReadCharsWriteChars .
  • ファイル - ファイルは File (と呼ばれる)。 Path ) Java 7のNIOファイルシステムとSBTのPathFinder APIを組み合わせたAPIです。

    PathFileSystem は、Scala IO File API への主なエントリポイントです。
import scalax.io._

val output:Output = Resource.fromFile("someFile")

// Note: each write will open a new connection to file and 
//       each write is executed at the begining of the file,
//       so in this case the last write will be the contents of the file.
// See Seekable for append and patching files
// Also See openOutput for performing several writes with a single connection

output.writeIntsAsBytes(1,2,3)
output.write("hello")(Codec.UTF8)
output.writeStrings(List("hello","world")," ")(Codec.UTF8)


オリジナルの回答(2011年1月)、scala-ioの旧所在地を記載。

Scala2.9を待ちたくない場合は、Scala2.9に対応した scala-incubator / scala-io ライブラリです。

(" に記載されています。 なぜScalaソースは基礎となるInputStreamを閉じないのですか? となります)

参照 サンプル

{ // several examples of writing data
    import scalax.io.{
      FileOps, Path, Codec, OpenOption}
    // the codec must be defined either as a parameter of ops methods or as an implicit
    implicit val codec = scalax.io.Codec.UTF8


    val file: FileOps = Path ("file")

    // write bytes
    // By default the file write will replace
    // an existing file with the new data
    file.write (Array (1,2,3) map ( _.toByte))

    // another option for write is openOptions which allows the caller
    // to specify in detail how the write should take place
    // the openOptions parameter takes a collections of OpenOptions objects
    // which are filesystem specific in general but the standard options
    // are defined in the OpenOption object
    // in addition to the definition common collections are also defined
    // WriteAppend for example is a List(Create, Append, Write)
    file.write (List (1,2,3) map (_.toByte))

    // write a string to the file
    file.write("Hello my dear file")

    // with all options (these are the default options explicitely declared)
    file.write("Hello my dear file")(codec = Codec.UTF8)

    // Convert several strings to the file
    // same options apply as for write
    file.writeStrings( "It costs" :: "one" :: "dollar" :: Nil)

    // Now all options
    file.writeStrings("It costs" :: "one" :: "dollar" :: Nil,
                    separator="||\n||")(codec = Codec.UTF8)
  }