文件输出流 FileNotFoundException
FileoutputStream FileNotFoundException
我正在使用 java SE eclipse。
据我所知,当没有由参数 FileOutputStream 构造函数命名的文件时,创建由参数命名的新文件。但是,随着继续,我看到 FileOutputStream 产生异常 FileNotFoundException。我真的不知道为什么需要这个例外。我的知识有什么问题吗?
我的代码如下(制作 WorkBook 并写入文件。在这段代码中,虽然没有文件 "data.xlsx",但 FileOutpuStream 生成文件 "data.xlsx"。
public ExcelData() {
try {
fileIn = new FileInputStream("data.xlsx");
try {
wb = WorkbookFactory.create(fileIn);
sheet1 = wb.getSheet(Constant.SHEET1_NAME);
sheet2 = wb.getSheet(Constant.SHEET2_NAME);
} catch (EncryptedDocumentException | InvalidFormatException | IOException e) {
e.printStackTrace();
} // if there is file, copy data into workbook
} catch (FileNotFoundException e1) {
initWb();
try {
fileOut = new FileOutputStream("data.xlsx");
wb.write(fileOut);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} // if there is not file, create init workbook
} // ExcelData()
如果有什么奇怪的,请告诉我,谢谢
如果文件不存在且无法创建 (doc),它将抛出 FileNotFoundException,但如果可以,它将创建它。为确保您可能应该在创建 FileOutputStream 之前首先测试该文件是否存在(如果不存在则使用 createNewFile() 创建)
File yourFile = new File("score.txt");
yourFile.createNewFile();
FileOutputStream oFile = new FileOutputStream(yourFile, false);
从这里回答:Java FileOutputStream Create File if not exists
还有另一种情况,其中 new FileOutputStream("...")
抛出 FileNotFoundException
,即在 Windows 上,当文件存在时,但文件属性 hidden 已设置。
这里没有办法,只能在打开文件流之前重新设置隐藏属性,比如
Files.setAttribute(yourFile.toPath(), "dos:hidden", false);
我正在使用 java SE eclipse。 据我所知,当没有由参数 FileOutputStream 构造函数命名的文件时,创建由参数命名的新文件。但是,随着继续,我看到 FileOutputStream 产生异常 FileNotFoundException。我真的不知道为什么需要这个例外。我的知识有什么问题吗?
我的代码如下(制作 WorkBook 并写入文件。在这段代码中,虽然没有文件 "data.xlsx",但 FileOutpuStream 生成文件 "data.xlsx"。
public ExcelData() {
try {
fileIn = new FileInputStream("data.xlsx");
try {
wb = WorkbookFactory.create(fileIn);
sheet1 = wb.getSheet(Constant.SHEET1_NAME);
sheet2 = wb.getSheet(Constant.SHEET2_NAME);
} catch (EncryptedDocumentException | InvalidFormatException | IOException e) {
e.printStackTrace();
} // if there is file, copy data into workbook
} catch (FileNotFoundException e1) {
initWb();
try {
fileOut = new FileOutputStream("data.xlsx");
wb.write(fileOut);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} // if there is not file, create init workbook
} // ExcelData()
如果有什么奇怪的,请告诉我,谢谢
如果文件不存在且无法创建 (doc),它将抛出 FileNotFoundException,但如果可以,它将创建它。为确保您可能应该在创建 FileOutputStream 之前首先测试该文件是否存在(如果不存在则使用 createNewFile() 创建)
File yourFile = new File("score.txt");
yourFile.createNewFile();
FileOutputStream oFile = new FileOutputStream(yourFile, false);
从这里回答:Java FileOutputStream Create File if not exists
还有另一种情况,其中 new FileOutputStream("...")
抛出 FileNotFoundException
,即在 Windows 上,当文件存在时,但文件属性 hidden 已设置。
这里没有办法,只能在打开文件流之前重新设置隐藏属性,比如
Files.setAttribute(yourFile.toPath(), "dos:hidden", false);