电脑端如何访问手机SD卡中的文件

发布时间:2023-04-06 10:30

看到标题,估计各位看官有点懵,访问SD卡中的文件,你连上数据线不就行了,或者说你想要获取一些数据,你用及时通讯(微信,钉钉,QQ等等),在线传输不就行了,这些都可以的啊,有什么难的吗?哎,各位小老弟,还真有一种情况的出现,我们公司就是一个特例,每个人的电脑,都屏蔽了USB访问文件的权限,也就是说,你是硬盘,U盘,还是数据线,插上后,是没有权限查看文件的,想要从电脑往手机传输东西,或者说从手机往电脑传输东西,依靠的是及时通讯工具或者其它可用的工具。

针对这种情况的出现,不可能每个测试机里,我们都不断的登录一些及时通讯(微信,QQ等)的账号,况且这些传输文件,依赖性太强,也无法满足我们传输到某一个位置的需求,基于这种情况,看到了yanzhenjie开源的AndServer,这是一个基于Android系统的一个服务,可以实现网站的部署,还有动态api形式的访问,是非常强大的,大家可以直接看相关文档:

https://yanzhenjie.com/AndSer...

基于AndServer所提供的功能,是不是我们就可以以自己的手机做为一个服务器,来部署一个网站呢?这个必须可以,AndServer中已经提供了部署的方式,部署完毕后,无非就是,电脑端访问服务器(也就是自己手机)里的各个文件,目前呢,基于AndServer的Demo已经开源,地址是:https://github.com/AbnerMing8...,大家有需要的可以下载。

具体的效果如下图,电脑和手机必须连接同一网络,运行至手机之后,就可以打开服务,在电脑端输入对应的地址,就可以查看手机SD卡里的文件,也可以进行上传,或者删除。

手机端:

\"电脑端如何访问手机SD卡中的文件_第1张图片\"

PC端效果:

\"电脑端如何访问手机SD卡中的文件_第2张图片\"

目前上传,是上传到你选择的路径下,同样的删除,也需要你在路径后,把文件的名字追加到路径后面。

Demo中重点的逻辑,有两个,一个是获取手机SD卡的各个文件路径,一个是上传和删除文件。

获取文件

/**
 * 返回文件列表
 */
@GetMapping(path = \"/list\")
List getFileList(@RequestParam(name = \"rootPath\", required = false) String rootPath) {
    File file;
    if (TextUtils.isEmpty(rootPath)) {
        file = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
    } else {
        file = new File(rootPath);
    }
    List fileInfoList = new ArrayList<>();
    if (!file.isDirectory()) {
        return fileInfoList;
    }
    File[] list = file.listFiles();
    if (list == null || list.length == 0) {
        return fileInfoList;
    }
    FileInfo fileInfo;
    for (File f : list) {
        String name = f.getName();
        fileInfo = new FileInfo();
        fileInfo.setName(name);
        fileInfo.setUrl(f.getAbsolutePath());
        fileInfo.setDateModified(f.lastModified());
        fileInfo.setDateModifiedString(TimeUtils.INSTANCE.formatDateToStr(f.lastModified(), \"yyyy/MM/dd aHH:mm:ss\"));
        if (f.isFile()) {
            fileInfo.setIsDir(0);
            fileInfo.setSize(f.length());
            fileInfo.setSizeString(FileUtils.formatFileSize(f.length()));
        } else {
            fileInfo.setIsDir(1);
        }
        fileInfoList.add(fileInfo);
    }
    return fileInfoList;
}

上传文件:

@PostMapping(\"/upload\")
String uploadFile(
        @RequestParam(name = \"path\") String path,
        @RequestParam(name = \"file\") MultipartFile multipartFile) {

    File dir = Environment.getExternalStorageDirectory();
    if (!\"-1\".equals(path)) {
        //证明为空
        dir = Environment.getExternalStoragePublicDirectory(path);
    }
    try {
        String fileName = multipartFile.getFilename();
        String filePath = dir + \"/\" + fileName;
        InputStream inputStream = (multipartFile.getStream());
        FileOutputStream fileWriter = new FileOutputStream(filePath);
        byte[] bytes = new byte[1024];
        int length;
        while ((length = inputStream.read(bytes)) > 0) {
            fileWriter.write(bytes, 0, length);
            fileWriter.flush();
        }
        inputStream.close();
        fileWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
        return e.getMessage();
    }
    return multipartFile.getFilename();
}

删除文件

@PostMapping(\"/deleteFile\")
String deleteFile(
        @RequestParam(name = \"path\") String path) {

    File file = new File(path);
    if (file.exists()) {
        file.delete();
    }

    return \"删除成功\";
}

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号