添加手机端BoBullToon数据文件夹查找模块。
This commit is contained in:
		| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Wed Aug 20 20:19:22 HKT 2025 | ||||
| #Mon Aug 25 12:46:20 GMT 2025 | ||||
| stageCount=14 | ||||
| libraryProject= | ||||
| baseVersion=15.3 | ||||
| publishVersion=15.3.13 | ||||
| buildCount=0 | ||||
| buildCount=3 | ||||
| baseBetaVersion=15.3.14 | ||||
|   | ||||
| @@ -11,6 +11,7 @@ import cc.winboll.studio.contacts.dun.Rules; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import com.hjq.toast.ToastUtils; | ||||
| import java.io.File; | ||||
| import java.io.FileFilter; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| @@ -154,6 +155,62 @@ public class TomCat { | ||||
|     File getWorkingFolder() { | ||||
|         return mContext.getExternalFilesDir(TAG); | ||||
|     } | ||||
| 	 | ||||
| 	public File getBoBullToonDataFolder() { | ||||
| 		File fCheckRoot = getWorkingFolder(); | ||||
| 		if (fCheckRoot == null || !fCheckRoot.exists()) { | ||||
| 			return fCheckRoot; | ||||
| 		} | ||||
|  | ||||
| 		// 递归查找符合条件的文件夹 | ||||
| 		File targetFolder = findTargetFolder(fCheckRoot); | ||||
| 		return targetFolder != null ? targetFolder : fCheckRoot; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * 递归查找同时包含LICENSE和README.md文件的文件夹 | ||||
| 	 */ | ||||
| 	private File findTargetFolder(File currentFolder) { | ||||
| 		// 检查当前文件夹是否符合条件 | ||||
| 		if (hasRequiredFiles(currentFolder)) { | ||||
| 			return currentFolder; | ||||
| 		} | ||||
|  | ||||
| 		// 查找子文件夹(Java 7不支持方法引用,用匿名内部类过滤) | ||||
| 		File[] subFolders = currentFolder.listFiles(new FileFilter() { | ||||
| 				@Override | ||||
| 				public boolean accept(File file) { | ||||
| 					return file.isDirectory(); // 仅保留子文件夹 | ||||
| 				} | ||||
| 			}); | ||||
|  | ||||
| 		if (subFolders != null) { | ||||
| 			for (File subFolder : subFolders) { | ||||
| 				File result = findTargetFolder(subFolder); | ||||
| 				if (result != null) { | ||||
| 					return result; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return null; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * 检查文件夹中是否同时存在LICENSE和README.md文件 | ||||
| 	 */ | ||||
| 	private boolean hasRequiredFiles(File folder) { | ||||
| 		if (folder == null || !folder.isDirectory()) { | ||||
| 			return false; | ||||
| 		} | ||||
|  | ||||
| 		// 检查两个文件是否同时存在且均为文件(非文件夹) | ||||
| 		File licenseFile = new File(folder, "LICENSE"); | ||||
| 		File readmeFile = new File(folder, "README.md"); | ||||
|  | ||||
| 		return licenseFile.exists() && licenseFile.isFile() | ||||
| 			&& readmeFile.exists() && readmeFile.isFile(); | ||||
| 	} | ||||
|  | ||||
| 	public void cleanBoBullToon() { | ||||
| 		String destinationFolder = getWorkingFolder().getPath(); // 替换为实际的目标文件夹路径 | ||||
| @@ -170,9 +227,9 @@ public class TomCat { | ||||
|  | ||||
|     public boolean loadPhoneBoBullToon() { | ||||
|         listPhoneBoBullToon.clear(); | ||||
|         File fBoBullToon = new File(getWorkingFolder(), "bobulltoon"); | ||||
|         File fBoBullToon = getBoBullToonDataFolder(); | ||||
|         if (fBoBullToon.exists()) { | ||||
|             LogUtils.d(TAG, String.format("getWorkingFolder() %s", getWorkingFolder())); | ||||
|             LogUtils.d(TAG, String.format("getBoBullToonDataFolder() %s", getWorkingFolder())); | ||||
|             for (File userFolder : fBoBullToon.listFiles()) { | ||||
|                 if (userFolder.isDirectory()) { | ||||
|                     for (File recordFile : userFolder.listFiles()) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen