目前我正在使用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位置。 我试过并搜索但无法找到确切的事情。
我尽力详述我的问题。如果仍然不清楚,请告诉我,我将以另一种方式尝试。
答案 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 ();
}