我在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
}
答案 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
。