File存本地

本文介绍了一种在Java中实现文件读取和图片保存的方法。通过使用InputStream和OutputStream,将文件从源位置读取并保存到指定目录下。代码详细展示了如何创建目录、读取文件、处理异常,并最终返回保存后的文件。
    public File savePic(File file) {
        File fileDir = new File("D:\\marTemp");
        InputStream inputStream = null;
        OutputStream os = null;
        if(!fileDir.exists()){
            System.out.println("mkdir");
            fileDir.mkdir();
        }

        try {
            byte[] bs = new byte[1024 * 1024 * 5];//1k * 1024 * 5
            int len;
            inputStream = new FileInputStream(file);
            logger.info("inputStream:"+inputStream);
            os = new FileOutputStream(fileDir.getPath()+File.separator+file.getName());
            logger.info("os:"+os);
            while ((len = inputStream.read(bs)) != -1) {
                os.write(bs, 0, len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            logger.info("FileNotFoundException:--------"+e.getMessage());
        } catch (IOException e) {
            e.printStackTrace();
            logger.info("IOException:--------"+e.getMessage());
        }finally {
            try {
                os.close();
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
                logger.info("FinallyIOException:--------"+e.getMessage());
            }
        }
        File sendFile = new File(fileDir.getPath()+File.separator+file.getName());
        return sendFile;
    }

 

<think>嗯,用户想了解如何使用OpenMV将拍摄的照片储到本地。我需要先回想一下之前提供的引用内容,尤其是引用[1]里的信息,因为它直接提到了OpenMV保存照片到SD卡的步骤。用户可能需要一个详细的教程,包括初始化SD卡、设置摄像头参数、拍摄并保存图片的步骤。 首先,我需要确认OpenMV的硬件要求,比如是否需要插入SD卡。然后,代码部分需要包括初始化SD卡的函数,比如sdcard.SDCard(),可能还需要挂载文件系统。接下来是摄像头初始化的步骤,像sensor.reset(),设置像素格式和帧大小。然后使用sensor.snapshot()拍摄,并用img.save()保存到/sd目录下。 用户可能还需要知道如何验证是否保存成功,比如检查文件是否在。另外,注意事项也很重要,比如SD卡格式化为FAT32,储空间不足的问题,以及文件名不能重复。这些点都需要在回答中提到,避免用户操作时出错。 然后,生成相关问题的时候,要考虑用户可能的后续需求,比如实时传输、视频录制、文件管理或者如何处理储失败的情况。这些问题可以帮助用户更深入地了解OpenMV的功能,并解决实际应用中可能遇到的问题。 需要确保回答结构清晰,分步骤说明,代码示例正确,并且注意事项明确。同时,引用[1]的内容要正确标注,其他引用如关于OpenCV的可能不太相关,但可以忽略,因为用户的问题集中在OpenMV上。最后,检查LaTeX格式是否符合要求,虽然这个问题可能不涉及数学公式,但如果有变量或路径名,可能需要使用行内格式,比如$file_name$。</think># OpenMV图像本地详细教程 ## 硬件准备 1. 插入MicroSD卡(推荐Class 10以上速度) 2. 确认卡槽方向正确(金属触点朝电路板方向) 3. 使用前需格式化SD卡为FAT32文件系统[^1] ## 代码实现步骤 ```python import sensor, image, sdcard, os # 初始化SD卡 sd = sdcard.SDCard() os.mount(sd, '/sd') # 挂载到/sd目录 # 摄像头初始化 sensor.reset() sensor.set_pixformat(sensor.RGB565) # 设置色彩格式 sensor.set_framesize(sensor.QVGA) # 320x240分辨率 sensor.skip_frames(time=2000) # 等待设置生效 # 拍摄并储 img = sensor.snapshot() # 获取当前帧 file_path = "/sd/test.jpg" img.save(file_path, quality=90) # 质量参数范围1-100 ``` ## 验证储成功 ```python print("文件列表:", os.listdir('/sd')) print("文件大小:", os.stat(file_path)[6], "bytes") ``` ## 进阶功能实现 ### 定时拍摄储 ```python import time frame_count = 0 while True: img = sensor.snapshot() img.save("/sd/frame_{:04d}.jpg".format(frame_count)) frame_count +=1 time.sleep_ms(1000) # 每秒拍摄一张 ``` ### 带时间戳的储 ```python from pyb import RTC rtc = RTC() datetime = rtc.datetime() filename = "/sd/{}-{}-{}_{}-{}-{}.jpg".format(*datetime) img.save(filename) ``` ## 注意事项 1. 储路径必须包含`/sd/`前缀 2. 文件名长度限制:DOS 8.3格式(主名8字符+扩展名3字符) 3. 典型储速度:QVGA分辨率约0.5秒/帧 4. 储空间计算:1GB卡约可4000张QVGA质量80的图片 ## 故障排查 | 现象 | 解决方案 | |-------|---------| | 文件未保存 | 检查`os.mount()`返回值 | | 写入速度慢 | 降低分辨率或质量参数 | | 储失败 | 使用`try-except`捕获异常 | : 引用[1]中SD卡操作要点:需正确初始化SD卡,根目录为/sd,注意文件储路径设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值