@@ -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 ( " getWorking Folder() %s " , getWorkingFolder ( ) ) ) ;
LogUtils . d ( TAG , String . format ( " getBoBullToonData Folder() %s " , getWorkingFolder ( ) ) ) ;
for ( File userFolder : fBoBullToon . listFiles ( ) ) {
if ( userFolder . isDirectory ( ) ) {
for ( File recordFile : userFolder . listFiles ( ) ) {