3

我在一个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

4 回答 4

7

由于这是 Groovy,您可以通过以下方式简化其他两个答案:

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从 a 创建对象。注意 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将字符串的字符转换为可写入磁盘的字节时,将使用平台默认编码。如果这是一个问题,您可以通过FileOutputStreamOutputStreamWriter. 例如:

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

要将 a 写入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的名称简单地实例化一个新的。Stringthis.cfgfile = new File(getStreamFromString

于 2012-05-18T07:58:39.383 回答