This commit is contained in:
Looly 2025-01-12 17:43:44 +08:00
parent 02ef612b75
commit b1aa76411e
3 changed files with 26 additions and 18 deletions

View File

@ -126,8 +126,10 @@ public class ClassPathResource extends UrlResource {
/** /**
* 根据给定资源初始化URL * 根据给定资源初始化URL
*
* @throws NoResourceException 资源不存在
*/ */
private void initUrl() { private void initUrl() throws NoResourceException{
if (null != this.clazz) { if (null != this.clazz) {
super.url = this.clazz.getResource(this.path); super.url = this.clazz.getResource(this.path);
} else if (null != this.classLoader) { } else if (null != this.classLoader) {

View File

@ -18,8 +18,8 @@ package org.dromara.hutool.core.io.resource;
import org.dromara.hutool.core.io.file.FileUtil; import org.dromara.hutool.core.io.file.FileUtil;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.core.net.url.UrlUtil; import org.dromara.hutool.core.net.url.UrlUtil;
import org.dromara.hutool.core.util.ObjUtil;
import java.io.File; import java.io.File;
import java.io.InputStream; import java.io.InputStream;
@ -75,8 +75,7 @@ public class FileResource implements Resource, Serializable {
* @param fileName 文件名带扩展名如果为null获取文件本身的文件名 * @param fileName 文件名带扩展名如果为null获取文件本身的文件名
*/ */
public FileResource(final File file, final String fileName) { public FileResource(final File file, final String fileName) {
Assert.notNull(file, "File must be not null !"); this.file = Assert.notNull(file, "File must be not null !");;
this.file = file;
this.lastModified = file.lastModified(); this.lastModified = file.lastModified();
this.name = ObjUtil.defaultIfNull(fileName, file::getName); this.name = ObjUtil.defaultIfNull(fileName, file::getName);
} }
@ -100,6 +99,9 @@ public class FileResource implements Resource, Serializable {
@Override @Override
public InputStream getStream() throws NoResourceException { public InputStream getStream() throws NoResourceException {
if (!exists()) {
throw new NoResourceException("File [{}] not exist!", this.file.getAbsolutePath());
}
return FileUtil.getInputStream(this.file); return FileUtil.getInputStream(this.file);
} }
@ -112,6 +114,15 @@ public class FileResource implements Resource, Serializable {
return this.file; return this.file;
} }
/**
* 文件是否存在
*
* @return 是否存在
*/
public boolean exists() {
return this.file.exists();
}
@Override @Override
public boolean isModified() { public boolean isModified() {
return this.lastModified != file.lastModified(); return this.lastModified != file.lastModified();

View File

@ -16,6 +16,7 @@
package org.dromara.hutool.db.config; package org.dromara.hutool.db.config;
import org.dromara.hutool.core.array.ArrayUtil;
import org.dromara.hutool.core.convert.ConvertUtil; import org.dromara.hutool.core.convert.ConvertUtil;
import org.dromara.hutool.core.io.resource.NoResourceException; import org.dromara.hutool.core.io.resource.NoResourceException;
import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.map.MapUtil;
@ -38,13 +39,10 @@ public class SettingConfigParser implements ConfigParser {
private static final String CONNECTION_PREFIX = "connection."; private static final String CONNECTION_PREFIX = "connection.";
/** /**
* 数据库配置文件可选路径1 * 数据库配置文件可选路径
*/ */
private static final String DEFAULT_DB_SETTING_PATH = "config/db.setting"; private static final String[] DEFAULT_DB_SETTING_PATHS = {"config/db.setting", "db.setting"};
/** /**
* 数据库配置文件可选路径2
*/
private static final String DEFAULT_DB_SETTING_PATH2 = "db.setting";
/** /**
* 创建默认配置解析器 * 创建默认配置解析器
@ -100,18 +98,15 @@ public class SettingConfigParser implements ConfigParser {
* @since 5.8.0 * @since 5.8.0
*/ */
private static Setting createDefaultSetting() { private static Setting createDefaultSetting() {
Setting setting; for (final String settingPath : DEFAULT_DB_SETTING_PATHS) {
try {
setting = new Setting(DEFAULT_DB_SETTING_PATH, true);
} catch (final NoResourceException e) {
// 尝试ClassPath下直接读取配置文件
try { try {
setting = new Setting(DEFAULT_DB_SETTING_PATH2, true); return new Setting(settingPath, true);
} catch (final NoResourceException e2) { } catch (final NoResourceException e) {
throw new NoResourceException("Default db setting [{}] or [{}] in classpath not found !", DEFAULT_DB_SETTING_PATH, DEFAULT_DB_SETTING_PATH2); // ignore
} }
} }
return setting;
throw new NoResourceException("Default db settings [{}] in classpath not found !", ArrayUtil.join(DEFAULT_DB_SETTING_PATHS, ","));
} }
/** /**