java - Android保存文件到内存卡

标签 java android android-emulator jsch

在下面的程序中,我得到了如下所示的异常。基本上我正在尝试做的是将文件从远程系统复制到设备。但是当保存到模拟器和设备上的存储卡时,我我遇到了异常。下面的异常来自模拟器,我可以说存储卡没有连接到模拟器,所以是异常。但是代码是否适用于物理设备。

如何让代码在模拟器和设备上运行

异常(exception):

 09-13 15:47:16.789: I/System.out(400): java.io.FileNotFoundException: /mnt/sdcard/Download/new.txt (Not a directory)

代码:

package com.scp2;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.jcraft.jsch.*;


import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Toast;

public class Scp2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

            JSch jsch = new JSch();
            Session session = null;
            try {
                session = jsch.getSession("guest", "17.30.5.2", 22);

                session.connect();
                Toast.makeText(this,  "in try2" , Toast.LENGTH_SHORT).show();

                channel.connect();
                ChannelSftp sftpChannel = (ChannelSftp) channel;
                File ofile = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS),"new.txt");
                Toast.makeText(this, ofile.toString() , Toast.LENGTH_SHORT).show();
                                   try {
                    FileOutputStream f = new FileOutputStream(ofile);
                  sftpChannel.get("/root/a.txt","/mnt/sdcard/download/dd.txt");
                  /*OR What shoud the abobe statement be **/
              //sftpChannel.get("/root/a.txt",ofile); or this statement is correct

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                         System.out.println(e.toString());
                }


                sftpChannel.exit();
                session.disconnect();
            } catch (JSchException e) {
                e.printStackTrace(); 

            } catch (SftpException e) {
                e.printStackTrace();

            }


    }
 }

最佳答案

这样做是为了创建文件;比你的更好更安全的方法

File dir = new File(Environment.getExternalStorageDirectory(),"/Downloads/");
dir.mkdirs();
String strFileName = "dd.html";
File file = new File(dir,strFileName);

关于java - Android保存文件到内存卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404281/

相关文章:

java - 在java awt或swing中,如何安排键盘输入到鼠标所在的位置?

Javax ImageIO IIOException 显然没有原因

android - PreferenceCategory.removePreference() 返回 false,因此不会删除首选项

android - 如何在 Exoplayer 中顺序播放视频 block

android - 使用循环将新行动态添加到表中 - android

android - x86 Android 模拟器无法在 macOS Sierra 上运行

java - Apache Pig过滤元组中的空值或文字

java - 找不到 arm eabi v7a 系统镜像 android

java - ADB 无法识别我的平板电脑 ("waiting for device")

java - 使用 toString 方法在 java 中仅显示日期