在Android上的JSch中没有这样的文件

时间:2015-05-12 10:52:13

标签: android jsch android-file

我试图从我的服务上传文件。我是这样做的:

JSch ssh = new JSch();
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");

session = ssh.getSession("****", "*myIP*");
session.setPassword("*******");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
sftp.put(f + "/" + file, " /var/www/webimages/client/88/");
} catch (JSchException e) {
    e.printStackTrace();
} catch (SftpException e) {
    e.printStackTrace();
} finally {
    if (channel != null) {
        channel.disconnect();
    }
    if (session != null) {
        session.disconnect();
    }
}

这是我尝试使用的脚本。图像文件如下所示:

final String pathToWatch = android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/";
Toast.makeText(this, "My Service Started and trying to watch " + pathToWatch, Toast.LENGTH_LONG).show();
observer = new FileObserver(pathToWatch) { // set up a file observer to watch this directory on sd card

    @Override
    public void onEvent(int event, String file) {
        if (event == FileObserver.CREATE && !file.equals(".probe")) {
            Log.d(TAG, "File created [" + pathToWatch + file + "]");

            String inputFileName =Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/Camera/";
            File f = new File(inputFileName);
在这种情况下,

f:/storage/emulated/0/DCIM/Camera/IMG_20150512_124943.jpg

尝试上传时我会收到此错误日志:

 2: No such file
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at com.geniusgentlemen.support_classes.service.BackgroundSpeebee$1.onEvent(BackgroundSpeebee.java:82)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:122)
05-12 12:49:45.311    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at android.os.FileObserver$ObserverThread.observe(Native Method)
05-12 12:49:45.312    5070-5454/com.geniusgentlemen.gp_android_app W/System.err﹕ at android.os.FileObserver$ObserverThread.run(FileObserver.java:85)

我做错了什么我在清单中也有读写权限。

1 个答案:

答案 0 :(得分:1)

错误No such file可能会产生误导 - 我猜这不是关于您的源文件,而是关于您的目标目录。

您正在为JSch提供目的地<SPACE>/var/www/webimages/client/88/" - 尝试修剪它。

开源的好处在于它是开源的:您可以查看抛出异常的真实line of code。 (一句警告:我不确定你是否想这样做......) 错误代码和消息似乎都是从缓冲区读取的,因此很明显错误不是来自您的设备,而是来自服务器。

查看课程的开头,甚至会a constant定义您的错误代码2SSH_FX_NO_SUCH_FILE