- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 FTP 下载文件。基本上我正在使用一个 Activity 的两个选项卡 fragment 。 RemoteTabFragment 和 LocalTabFragment。
在 LocalTabFragment 中,我在我的下载目录中列出了文件。在 RemoteTabFragment 中,我正在列出远程文件,并且可以选择将远程文件下载到本地下载目录。
对于 FTP 操作,我使用 AsyncTask。这是 AsyncTask 的 doInBackground 函数:
protected FTPClient doInBackground(Void... args) {
Log.d("siteobj", site.toString());
try {
FTPClient ftpClient = new FTPClient();
ftpClient.connect(site.get("host"));
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
ftpClient.login(site.get("login_name"), site.get("password"));
performTask(ftpClient);
String reply = ftpClient.getReplyString();
if (ftpClient.getReplyString().contains("250")) {
message = "Files loaded";
} else {
message = reply;
}
} catch (Exception e) {
exception = e;
}
return ftpClient;
}
这里是doInBackground()方法中使用的performTask方法,这里我只是把下载代码粘贴到performTask方法中。
private FTPClient performTask (FTPClient ftpClient) {
if(path == null) {
path = "/";
}
try {
switch (task) {
case "download":
ftpClient.changeWorkingDirectory(path);
String filename = args.getString("filename");
String localPath = args.getString("localPath");
File localDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsoluteFile(), filename);
//File file = new File(localDir, filename);
Log.d("localDir", localDir.getPath());
OutputStream outputStream = new FileOutputStream(localDir);
Log.d("output stream", outputStream.toString());
Boolean success = ftpClient.retrieveFile (filename, outputStream);
workingDirectory = ftpClient.printWorkingDirectory();
Log.d("working directory", workingDirectory);
break;
default:
files = ftpClient.listFiles("/");
}
} catch (IOException ex){
ex.printStackTrace();
//Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
}
return ftpClient;
}
所以当执行这条语句时:OutputStream outputStream = new FileOutputStream(localDir);
它给出了错误,实际上是异常,下面是异常的确切堆栈跟踪。
12-21 04:13:29.132 412-2013/com.hafiz.ftp W/System.err﹕ java.io.FileNotFoundException: /mnt/sdcard/Download/5021.shtml: open failed: EACCES (Permission denied)
12-21 04:13:29.152 412-2013/com.hafiz.ftp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:406)
12-21 04:13:29.172 412-2013/com.hafiz.ftp W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
12-21 04:13:29.172 412-2013/com.hafiz.ftp W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
12-21 04:13:29.192 412-2013/com.hafiz.ftp W/System.err﹕ at com.hafiz.ftp.FtpTask.performTask(FTPTask.java:119)
12-21 04:13:29.192 412-2013/com.hafiz.ftp W/System.err﹕ at com.hafiz.ftp.FtpTask.doInBackground(FTPTask.java:72)
12-21 04:13:29.202 412-2013/com.hafiz.ftp W/System.err﹕ at com.hafiz.ftp.FtpTask.doInBackground(FTPTask.java:26)
12-21 04:13:29.212 412-2013/com.hafiz.ftp W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:264)
12-21 04:13:29.223 412-2013/com.hafiz.ftp W/System.err﹕ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-21 04:13:29.232 412-2013/com.hafiz.ftp W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-21 04:13:29.242 412-2013/com.hafiz.ftp W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
12-21 04:13:29.242 412-2013/com.hafiz.ftp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-21 04:13:29.252 412-2013/com.hafiz.ftp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-21 04:13:29.262 412-2013/com.hafiz.ftp W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
12-21 04:13:29.272 412-2013/com.hafiz.ftp W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
12-21 04:13:29.322 412-2013/com.hafiz.ftp W/System.err﹕ at libcore.io.Posix.open(Native Method)
12-21 04:13:29.612 412-418/com.hafiz.ftp D/dalvikvm﹕ GC_CONCURRENT freed 2295K, 21% free 9538K/11975K, paused 12ms+28ms
12-21 04:13:29.712 412-2013/com.hafiz.ftp W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
12-21 04:13:30.002 412-2013/com.hafiz.ftp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:390)
12-21 04:13:30.172 412-2013/com.hafiz.ftp W/System.err﹕ ... 12 more
所以你们能说出这是什么原因吗?那是因为我正在使用OutputStream outputStream = new FileOutputStream(localDir);
在 doInBackground() 方法中?我试图在 AsyncTask 之外创建 FileOutputStream 并在类的公共(public)变量中发送。但我仍然面临同样的问题。此外,如果我需要在 AsyncTask 之外使用此方法,请告诉我如何使用它,而我的目的是从 FTP 下载文件并上传到那里。
我在 android list 文件中的权限和设置是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hafiz.ftp" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:debuggable="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".TabActivity"
android:label="@string/title_activity_tab" >
</activity>
</application>
</manifest>
请让我知道您认为我做错了什么导致了该异常。如果您知道更好的方法来完成同样的事情,请告诉我。如果您认为缺少某些内容,我需要告诉您以获得更好的答案,请随时提问。
请注意,我发现了很多类似的问题,但其中很多都有不同的答案,所以我想通过问这个问题来了解我做错了什么。所以请不要只是按点重定向到其他解决方案,还要在这里告诉。
最佳答案
这是一个错误:
<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
你需要小写的android.permission
。
关于java - 在 AsyncTask 中打开失败 : EACCES (Permission denied) from IoBridge. java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387071/
我从 ssh 收到以下错误: Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open. It is recommended th
我正在使用 WSL1(Windows Linux 子系统)和 Ubuntu 20.04.1 LTS 开发 Win10。我有一个 Samba (1.0) 网络共享,我想通过我的 Ubuntu 终端在上面
文件权限 我有一个文件 data.tgz我想解压缩。 -rw-r--r-- 1 username group 20342951248 mai 18 11:50 data.tgz 目录权限 文件所在的目
我正在尝试设置一些其他组不应该看到的组维护文件夹。目前,我通过取消单击@@sharing 选项卡中的“从更高级别继承权限”复选框来实现这一点,但我想自动执行此操作。 我在文档或谷歌搜索中找不到任何关于
在 Android 4 下,以下简单的 native C 代码行失败并出现 Permission denied 错误 when not run as 根: online_socket = socket
(我是 tortoise SVN 的新手) 我的乌龟 SVN 中有 2 个文件夹。每个人都需要一组不同的授权(我不想有权访问第一个文件夹的人对第二个文件夹具有读/写访问权限。 我怎样才能完成它?我注意
我用 tar -zxvf tarFile.tar.gz解压tarFile,但有错误提示tar: subfile :Cannot open: Permission denied . 我是root用户,权
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我想做的是从文件夹内的文件夹中获取 .mp3 文件。多次。 一切都很完美,除了当我尝试将文件复制到新文件夹(已经存在)时,它给出:[Errno 13]权限被拒绝: import os, shutil
我是 WAMP 的新手我今天刚刚安装了它。 设置进行得很顺利,本地主机似乎可以工作,但是当我尝试访问 phpMyAdmin 时我收到此错误: Forbidden You don't have perm
我正在开发一个应用程序,我在其中使用塔位置跟踪位置。所以我使用地理定位 api 来跟踪位置并访问手机状态以获取网络详细信息。 这很好用,突然间它开始给出 LOCATION_HARDWARE 权限的安全
这两种语法有什么区别。android:uses-permission 和 uses-permission。例如: 当我创建一个从存储中读取的 Activity 时,Android Studio 自
我正在尝试使用新的 GrantPermissionRule这是最新支持库的一部分。 在我的 list 中,我声明如下: 在我的代码中,我调用: @Rule public GrantPermissio
有没有navigator.permissions.query 的替代方案 Permissions API 查询以检查 geolocation 权限。导致它仍处于工作草案中并且浏览器兼容性较差。 W3C
这个错误真的真的很奇怪,我不知道如何重现它以及如何修复它,因为我进行了大量搜索,但没有任何用处。 这是堆栈跟踪: Stack Trace _______________________________
我正在尝试在 ubuntu 16.4 上安装 MaryTTS。 但是当我上线时 sudo -u mary git clone https://github.com/marytts/marytts.gi
在我们基于 Symfony2 的应用程序中,我们希望创建一个列表,列出系统中哪些用户对给定域对象具有权限。我们正在使用 ACL,我们的直接直觉是查看从相关域对象的 ACLProvider 返回的 AC
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我有一个 Jenkins 用户,我想授予其对 Jenkins 实例运行远程 CLI 的权限。第一个命令是获取 config.xml: java -jar jenkins-cli.jar -s http
我今天收到这封邮件,但我没有使用 Admob 广告,而是使用 applovin 和 Facebook,我必须添加此权限还是仅适用于他们使用 Admob 的开发者? 即使没有像我一样的admob,每个人
我是一名优秀的程序员,十分优秀!