web-dev-qa-db-ja.com

FileWriterが新しいファイルを作成しないのはなぜですか? FileNotFoundException

したがって、次のようなコードスニペットがあります。 FileNotFoundExceptionがスローされる理由を調べようとしています。

File file= new File (WORKSPACE_PATH+fname);
FileWriter fw;
if (file.exists())
{
     fw = new FileWriter(file,true);//if file exists append to file. Works fine.
}
else
{
     fw = new FileWriter(file);// If file does not exist. Create it. This throws a FileNotFoundException. Why? 
}
6
seeker

_\_の末尾にセパレータがない場合は、セパレータを追加する必要があります(Windows:_/_およびUnix:_File.separator_、_WORKSPACE_PATH_を使用してシステムのセパレータを取得できます)。 、および親ディレクトリを使用してファイルを手動で作成すると役立つ場合があります。

_WORKSPACE_PATH_の末尾に区切り文字がない場合は、これを試してください。

_File file = new File(WORKSPACE_PATH + File.separator + fname);
_

そして、これをfw = new FileWriter(file);の前に追加します

_file.mkdirs(); // If the directory containing the file and/or its parent(s) does not exist
file.createNewFile();
_
3
utybo

ファイルの作成時に連結を使用しても、必要なパス区切り文字は追加されません。

File file = new File(WORKSPACE_PATH, fname);
3
nbz

これはうまくいくかもしれません:

File file= new File (WORKSPACE_PATH+fname);
FileWriter fw;
if (file.exists())
{
   fw = new FileWriter(file,true);//if file exists append to file. Works fine.
}
else
{
   file.createNewFile();
   fw = new FileWriter(file);
}
0
roelofs