3

FileJava文字列変数にファイルの内容がありますが、それをオブジェクトに変換したいのですが、それは可能ですか?

public void setCfgfile(File cfgfile)
{
    this.cfgfile = cfgfile
}

public void setCfgfile(String cfgfile)
{
    println "ok overloaded function"
    this.cfgfile = new File(getStreamFromString(cfgfile))
}
private def getStreamFromString(String str)
{
    // convert String into InputStream
    InputStream is = new ByteArrayInputStream(str.getBytes())
    is
}
4

4 に答える 4

7

これはGroovyであるため、他の2つの答えを次のように簡略化できます。

File writeToFile( String filename, String content ) {
  new File( filename ).with { f ->
    f.withWriter( 'UTF-8' ) { w ->
      w.write( content )
    }
    f
  }
}

contentこれは、書き込んだばかりのファイルにファイルハンドルを返します

于 2012-05-18T08:08:58.253 に答える
2

apache commons io libを使用してみてください

org.apache.commons.io.FileUtils.writeStringToFile(File file, String data)
于 2012-05-18T08:16:35.310 に答える
0

コンストラクターを使用して、からいつでもFileオブジェクトを作成できます。Fileオブジェクトは抽象的なパス名のみを表すことに注意してください。ディスク上のファイルではありません。StringFile(String)

文字列によって保持されているテキストを含む実際のファイルをディスク上に作成しようとしている場合は、次のようないくつかのクラスを使用できます。

try {
    Writer f = new FileWriter(nameOfFile);
    f.write(stringToWrite);
    f.close();
} catch (IOException e) {
    // unable to write file, maybe the disk is full?
    // you should log the exception but printStackTrace is better than nothing
    e.printStackTrace();
}

FileWriter文字列の文字をディスクに書き込むことができるバイトに変換するときに、プラットフォームのデフォルトのエンコーディングを使用します。FileOutputStreamこれが問題になる場合は、でラップすることで別のエンコーディングを使用できますOutputStreamWriter。例えば:

String encoding = "UTF-8";
Writer f = new OutputStreamWriter(new FileOutputStream(nameOfFile), encoding);
于 2012-05-18T07:57:32.730 に答える
0

Stringファイルに書き込むには、通常、 BufferedWriterを使用する必要があります。

private writeToFile(String content) {
    BufferedWriter bw;
    try {
        bw = new BufferedWriter(new FileWriter(this.cfgfile));
        bw.write(content);
     }
    catch(IOException e) {
       // Handle the exception
    }
    finally {   
        if(bw != null) {
            bw.close();
        }
    }
}

さらに、 はその名前new File(filename)で新しいFileオブジェクトをインスタンス化するだけですfilename(実際にディスク上にファイルを作成するわけではありません)。したがって、あなたは次のように述べています。

this.cfgfile = new File(getStreamFromString(cfgfile))

メソッドによって返されたFile名前でnew を単純にインスタンス化します。Stringthis.cfgfile = new File(getStreamFromString

于 2012-05-18T07:58:39.383 に答える