又遇到了一个功能点,网上的参考内容挺少的,终于把功能实现了,记一下,方便以后遇到坑的时候看看
<!-- more -->
主要功能点
- 获取一个SVN目录中的所有子文件夹以及文件
- 可以利用参数控制是否进行递归获取所有的文件夹中的子类
- 可以利用参数控制获取的是文件还是文件夹
- 通过输出流下载SVN中的文件
- 为SVN中添加目录
- 将不同级别的目录中的文件目录(内含子类)copy到一个指定的文件夹中
功能实现
获取一个SVN目录中的所有子文件夹以及文件
请不要在意代码中的dto类
* @Author: winterchen
* @Description: 获取SVN目录下下一层所有文件信息
* @Date: 2018/2/6
* @param dirPath 需要查找的目录名
* @param fileNameSearch 名称模糊搜索
* @param typeEnum 文件的类型枚举 -- 这个就是三个参数 ‘dir’,‘file’,‘all’
*/
public List<PmcFileInfoDto> getNextLvFileList2(String dirPath, String fileNameSearch, SvnGetFileTypeEnum typeEnum){
if (dirPath.startsWith("/")){
dirPath = dirPath.replaceFirst("/", "");
}
try {
//获取SVNRepository
SVNRepository svnRepository = SVNUtil.getSVNRepository();
//获取路径下的所有文件夹或文件
List<SVNDirEntry> svnList = SvnOption.getSvnFileBaseInfoDto(svnRepository,dirPath, fileNameSearch, typeEnum,
false);
//这个方法只是做对象转换的,忽略
return parsePmcFileInfoDtos(svnList);
} catch (SVNException e) {
throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.GET_FILE_LIST_FAIL)
.withErrorMessageArguments(e.getMessage());
}
}
SVNUtil.java
public class SVNUtil {
//svn连接地址
public static String storeUrl=null;
private static final String USERNAME = "你的账号";
private static final String PASSWD = "你的密码";
static{
storeUrl = “https://ip:port/svn/...”
}
/**
* @Author: winterchen
* @Description: 获取SVNRepository
* @Date: 2018/2/6
* @param url
*/
public static SVNRepository getSVNRepository(String url) throws SVNException{
SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager( USERNAME , PASSWD );
repository.setAuthenticationManager( authManager );
return repository;
}
/**
* @Author: winterchen
* @Description: 获取SVNRepository
* @Date: 2018/2/7
* @param
*/
public static SVNRepository getSVNRepository() throws SVNException{
return SVNUtil.getSVNRepository(storeUrl);
}
}
/**
* @Author: winterchen
* @Description: 获取 SVNUpdateClient
* @Date: 2018/2/9
* @param
*/
public static SVNUpdateClient getSVNUpdateClient(){
//声明SVN客户端管理类
SVNClientManager ourClientManager = null;
//初始化库。 必须先执行此操作。具体操作封装在setupLibrary方法中。
setupLibrary();
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
//实例化客户端管理类
ourClientManager = SVNClientManager.newInstance(
(DefaultSVNOptions) options, USERNAME, PASSWD);
//通过客户端管理类获得updateClient类的实例。
SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
updateClient.setIgnoreExternals(false);
return updateClient;
}
/*
* 初始化库
*/