我目前正在开发一个旨在在 windows 和 osx 上运行的程序,我有这个功能来复制一个在 windows 中完美运行的文件,但是当我在 osx 中尝试它时,我得到一个 IOException:“没有这样的文件或目录”,我研究了一点点,发现目标目录可能不存在(虽然它确实存在)所以我添加了这些行:
if(!f2.getParentFile().exists())
{
f2.getParentFile().mkdirs();
}
if(!f2.exists())
{
f2.createNewFile();
}
这似乎解决了问题,但是当我查找复制的文件(位于文档中)时,我一开始找不到它,但后来我看到程序实际上创建了一个我想保存文件的重复文件夹进入,所以我最终得到了两个具有完全相同“文档”名称的文件夹,这是其余的代码:
public static Boolean copyfile(String srFile, String dtFile )
{
{
try
{
File f1 = new File(srFile);
File f2 = new File(dtFile);
if(!f2.getParentFile().exists())
{
f2.getParentFile().mkdirs();
}
if(!f2.exists())
{
f2.createNewFile();
}
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
in.close();
out.close();
System.out.println("File copied.");
}
catch(FileNotFoundException ex){
System.out.println(ex.getMessage() + " in the specified directory.");
JOptionPane.showMessageDialog(new JFrame(), ex.getMessage());
return true;
}
catch(IOException e){
System.out.println(e.getMessage());
JOptionPane.showMessageDialog(new JFrame(), e.getMessage());
return true;
}
}
return false;
}
这显然不是想要的结果,我该怎么做才能让程序识别我要保存文件的文件夹?
更新:我使用了 ls -B 命令,它以不同的语言显示了两个文件夹:“Documents”和“Documentos”,即使它们在查找器中都显示为“Documentos”