現在、windows と osx で動作するように設計されたプログラムを開発しています。windows で完全に動作するファイルをコピーするこの機能がありますが、osx で試してみると、IOException: "no such file or directory" が発生しました。少し調べてみると、宛先ディレクトリが存在しない可能性があることがわかりました(存在していましたが)ので、次の行を追加しました:
if(!f2.getParentFile().exists())
{
f2.getParentFile().mkdirs();
}
if(!f2.exists())
{
f2.createNewFile();
}
これで問題は解決したようですが、コピーしたファイル(ドキュメントにある)を探したところ、最初は見つかりませんでしたが、プログラムが実際にファイルを保存したいフォルダーの複製フォルダーを作成したことがわかりましたに、まったく同じ「ドキュメント」名の 2 つのフォルダーが作成されました。残りのコードは次のとおりです。
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 コマンドを使用すると、2 つのフォルダーが異なる言語で表示されました: "Documents" と "Documentos" は、両方ともファインダーに "Documentos" として表示されます。