将字节数组写入java中的子文件夹

时间:2014-07-21 17:59:17

标签: java file fileoutputstream

目前我正在使用File class

创建一个文件夹
String homeDir = System.getProperty("user.home"); // this will  return C:\Users\username

byte[] b1 = abc.getValue(); // contains byte value

String dependentFile = "logoImageData"; // this is the folder name 

File f = new File(homeDir+"/"+ dependentFile); // after this line folder will be created like C:\Users\username\logoImageData

FileOutputStream fout=new FileOutputStream(homeDir+"/"+  abc.getName()); // assume abc.getName is image.jpg

fout.write(b1);  // this is writing the byte array data into location C:\Users\username\image.jpg
fout.close();

但我希望该位置为C:\ Users \ username \ logoImageData \ image.jpg

可以请任何人指出需要做些什么来更改FileOutputStream位置。 我试过并搜索但无法找到确切的事情。

我尽力详述我的问题。如果仍然不清楚,请告诉我,我将以另一种方式尝试。

2 个答案:

答案 0 :(得分:2)

你有两个问题:

1)您假设调用File构造函数将创建一个目录(如果它不存在)。事实并非如此。

2)您正在调用FileOutputStream构造函数并传入 home 目录,而不是要在其中创建文件的目录。

我还建议您使用File(string, string)File(File, String)构造函数来避免目录分隔符的所有字符串连接和硬编码...并使用“try with resources”语句来最后关闭流......或者甚至更好,使用Files.write一次性完成。这是FileOutputStream版本:

String homeDir = System.getProperty("user.home");

File imageDirectory = new File(homeDir, "logoImageData");
// Create the directory if it doesn't exist.
imageDirectory.mkdir();
// TODO: Check the directory now exists, and *is* a directory...

File imageFile = new File(imageDirectory, abc.getName());
try (OutputStream output = new FileOutputStream(imageFile)) {
    output.write(abc.getValue());
}

答案 1 :(得分:0)

f应包含您希望存储文件的文件夹:

FileOutputStream fout=new FileOutputStream(new File(f,abc.getName()));

当然,您应该确保该文件夹存在并在必要时创建它:

if (!f.exists ()) {
// -- create remote directory
    f.mkdirs ();
}