如何在Java中将String转换为File对象?

时间:2012-05-18 07:47:35

标签: java groovy

我在java字符串变量中有文件内容,我希望将其转换为File对象吗?

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 个答案:

答案 0 :(得分:7)

由于这是Groovy,您可以使用以下方法简化其他两个答案:

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

这会将文件句柄返回到刚刚写入content的文件

答案 1 :(得分:2)

尝试使用apache commons io lib

org.apache.commons.io.FileUtils.writeStringToFile(File file, String data)

答案 2 :(得分:0)

您始终可以使用File构造函数从String创建File(String)对象。请注意,File对象仅表示抽象路径名;不是磁盘上的文件。

如果您尝试在磁盘上创建包含字符串所持文本的实际文件,则可以使用多个类,例如:

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);

答案 3 :(得分: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方法返回的String的新this.cfgfile = new File(getStreamFromString