增加路径不可以写的判断,下载时,如果路径不可写,将执行失败回调 https://github.com/AriaLyy/Aria/issues/750

pull/789/head
laoyuyu 4 years ago
parent 7be93b38c2
commit 8785bb2875
  1. 7
      Aria/src/main/java/com/arialyy/aria/core/download/CheckDEntityUtil.java
  2. 26
      Aria/src/main/java/com/arialyy/aria/core/download/CheckDGEntityUtil.java
  3. 20
      Aria/src/main/java/com/arialyy/aria/core/download/CheckFtpDirEntityUtil.java
  4. 3
      DEV_LOG.md
  5. 2
      PublicComponent/src/main/java/com/arialyy/aria/util/FileUtil.java
  6. 1
      README.md

@ -110,7 +110,12 @@ public class CheckDEntityUtil implements ICheckEntityUtil {
if (TextUtils.isEmpty(filePath)) { if (TextUtils.isEmpty(filePath)) {
ALog.e(TAG, "下载失败,文件保存路径为null"); ALog.e(TAG, "下载失败,文件保存路径为null");
return false; return false;
} else if (!filePath.startsWith("/")) { }
if (!FileUtil.canWrite(filePath)){
ALog.e(TAG, String.format("路径【%s】不可写", filePath));
return false;
}
if (!filePath.startsWith("/")) {
ALog.e(TAG, String.format("下载失败,文件保存路径【%s】错误", filePath)); ALog.e(TAG, String.format("下载失败,文件保存路径【%s】错误", filePath));
return false; return false;
} }

@ -23,6 +23,7 @@ import com.arialyy.aria.core.inf.IOptionConstant;
import com.arialyy.aria.orm.DbEntity; import com.arialyy.aria.orm.DbEntity;
import com.arialyy.aria.util.ALog; import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CheckUtil;
import com.arialyy.aria.util.FileUtil;
import com.arialyy.aria.util.RecordUtil; import com.arialyy.aria.util.RecordUtil;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
@ -62,33 +63,40 @@ public class CheckDGEntityUtil implements ICheckEntityUtil {
* @return {@code true} 合法 * @return {@code true} 合法
*/ */
private boolean checkDirPath() { private boolean checkDirPath() {
if (TextUtils.isEmpty(mWrapper.getDirPathTemp())) { String dirPath = mWrapper.getDirPathTemp();
if (TextUtils.isEmpty(dirPath)) {
ALog.e(TAG, "文件夹路径不能为null"); ALog.e(TAG, "文件夹路径不能为null");
return false; return false;
} else if (!mWrapper.getDirPathTemp().startsWith("/")) { }
ALog.e(TAG, String.format("文件夹路径【%s】错误", mWrapper.getDirPathTemp())); if (!FileUtil.canWrite(dirPath)){
ALog.e(TAG, String.format("路径【%s】不可写", dirPath));
return false;
}
if (!dirPath.startsWith("/")) {
ALog.e(TAG, String.format("文件夹路径【%s】错误", dirPath));
return false; return false;
} }
File file = new File(mWrapper.getDirPathTemp()); File file = new File(dirPath);
if (file.isFile()) { if (file.isFile()) {
ALog.e(TAG, String.format("路径【%s】是文件,请设置文件夹路径", mWrapper.getDirPathTemp())); ALog.e(TAG, String.format("路径【%s】是文件,请设置文件夹路径", dirPath));
return false; return false;
} }
// 检查路径冲突 // 检查路径冲突
if (mWrapper.isNewTask() && !CheckUtil.checkDGPathConflicts(mWrapper.isIgnoreFilePathOccupy(), if (mWrapper.isNewTask() && !CheckUtil.checkDGPathConflicts(mWrapper.isIgnoreFilePathOccupy(),
mWrapper.getDirPathTemp())) { dirPath)) {
return false; return false;
} }
if (TextUtils.isEmpty(mEntity.getDirPath()) || !mEntity.getDirPath() if (TextUtils.isEmpty(mEntity.getDirPath()) || !mEntity.getDirPath()
.equals(mWrapper.getDirPathTemp())) { .equals(dirPath)) {
if (!file.exists()) { if (!file.exists()) {
file.mkdirs(); file.mkdirs();
} }
needModifyPath = true; needModifyPath = true;
mEntity.setDirPath(mWrapper.getDirPathTemp()); mEntity.setDirPath(dirPath);
ALog.i(TAG, String.format("文件夹路径改变,将更新文件夹路径为:%s", mWrapper.getDirPathTemp())); ALog.i(TAG, String.format("文件夹路径改变,将更新文件夹路径为:%s", dirPath));
} }
return true; return true;
} }

@ -45,32 +45,34 @@ public class CheckFtpDirEntityUtil implements ICheckEntityUtil {
* @return {@code true} 合法 * @return {@code true} 合法
*/ */
private boolean checkDirPath() { private boolean checkDirPath() {
if (TextUtils.isEmpty(mWrapper.getDirPathTemp())) { String dirPath = mWrapper.getDirPathTemp();
if (TextUtils.isEmpty(dirPath)) {
ALog.e(TAG, "文件夹路径不能为null"); ALog.e(TAG, "文件夹路径不能为null");
return false; return false;
} else if (!mWrapper.getDirPathTemp().startsWith("/")) { }
ALog.e(TAG, String.format("文件夹路径【%s】错误", mWrapper.getDirPathTemp())); if (!dirPath.startsWith("/")) {
ALog.e(TAG, String.format("文件夹路径【%s】错误", dirPath));
return false; return false;
} }
File file = new File(mWrapper.getDirPathTemp()); File file = new File(dirPath);
if (file.isFile()) { if (file.isFile()) {
ALog.e(TAG, String.format("路径【%s】是文件,请设置文件夹路径", mWrapper.getDirPathTemp())); ALog.e(TAG, String.format("路径【%s】是文件,请设置文件夹路径", dirPath));
return false; return false;
} }
// 检查路径冲突 // 检查路径冲突
if (mWrapper.isNewTask() && !CheckUtil.checkDGPathConflicts(mWrapper.isIgnoreFilePathOccupy(), if (mWrapper.isNewTask() && !CheckUtil.checkDGPathConflicts(mWrapper.isIgnoreFilePathOccupy(),
mWrapper.getDirPathTemp())) { dirPath)) {
return false; return false;
} }
if (TextUtils.isEmpty(mEntity.getDirPath()) || !mEntity.getDirPath() if (TextUtils.isEmpty(mEntity.getDirPath()) || !mEntity.getDirPath()
.equals(mWrapper.getDirPathTemp())) { .equals(dirPath)) {
if (!file.exists()) { if (!file.exists()) {
file.mkdirs(); file.mkdirs();
} }
mEntity.setDirPath(mWrapper.getDirPathTemp()); mEntity.setDirPath(dirPath);
ALog.i(TAG, String.format("文件夹路径改变,将更新文件夹路径为:%s", mWrapper.getDirPathTemp())); ALog.i(TAG, String.format("文件夹路径改变,将更新文件夹路径为:%s", dirPath));
} }
return true; return true;
} }

@ -1,4 +1,7 @@
## 开发日志 ## 开发日志
+ v_3.8.13
- 修复spi机制的兼容问题,https://github.com/AriaLyy/Aria/issues/743
- 增加路径不可以写的判断,下载时,如果路径不可写,将执行失败回调 https://github.com/AriaLyy/Aria/issues/750
+ v_3.8.12 (2020/8/15) + v_3.8.12 (2020/8/15)
- 修复一个正则表达式导致的文件名保存号异常问题 https://github.com/AriaLyy/Aria/issues/715 - 修复一个正则表达式导致的文件名保存号异常问题 https://github.com/AriaLyy/Aria/issues/715
- 修复一个匿名内部类中的内存溢出的问题 https://github.com/AriaLyy/Aria/issues/705 - 修复一个匿名内部类中的内存溢出的问题 https://github.com/AriaLyy/Aria/issues/705

@ -691,7 +691,7 @@ public class FileUtil {
return list; return list;
} }
private static boolean canWrite(String dirPath) { public static boolean canWrite(String dirPath) {
File dir = new File(dirPath); File dir = new File(dirPath);
if (dir.canWrite()) { if (dir.canWrite()) {
return true; return true;

@ -181,6 +181,7 @@ protected void onCreate(Bundle savedInstanceState) {
## 其他 ## 其他
有任何问题,可以在[issues](https://github.com/AriaLyy/Aria/issues)给我留言反馈。</br> 有任何问题,可以在[issues](https://github.com/AriaLyy/Aria/issues)给我留言反馈。</br>
在提交问题前,希望你已经查看过[wiki](https://aria.laoyuyu.me/aria_doc/)或搜索过[issues](https://github.com/AriaLyy/Aria/issues)。</br> 在提交问题前,希望你已经查看过[wiki](https://aria.laoyuyu.me/aria_doc/)或搜索过[issues](https://github.com/AriaLyy/Aria/issues)。</br>
[我的博客](https://www.laoyuyu.me)
## 捐赠 ## 捐赠
Aria是作业利用业余时间开发的一个项目,如果你喜欢我写的软件,可以考虑给我捐赠以支持我的工作</br> Aria是作业利用业余时间开发的一个项目,如果你喜欢我写的软件,可以考虑给我捐赠以支持我的工作</br>

Loading…
Cancel
Save