Android之JAVASe基础篇-面向对象-IO(九)

一、File类

import java.io.*;
public class NumberFormatDmeo
{
    public static void main(String[] args)throws Exception{
        File f=new File("f:"+File.separator+"test.txt");//没有该文件的话会自动创造
        OutputStream out=new FileOutputStream(f);//输出
        String str="Hello World!!!";
        byte[] b=str.getBytes();   //把str的内容保存到byte[]数组中
        for(int i=0;i<b.length;i++){
            out.write(b[i]);    //用OutputStream把byte[]的内容输出。
        }
    }
}

二、字节流的输入输出
InputStream:字节流的输入(把文件从外面输入到程序)
OutputStream:字节流的输出(从程序输出到外面的文件)
三、字符流的输出输入
字符输入流:Writer
字符输入流:Reader
四、字符流字节流相互的转换
OutputStreamWriter 字符流–>字节流
InputStreamReader 字符流–>字节流
转换流程
五、运用例子:
1.文件(图片为例子)上传
jsp页面代码:

<form id="form1" action="add/submitQuestion" method="post" enctype="multipart/form-data">
    <input  type="file"  name="files"  value=""/>
    <input  type="file"  name="files"  value=""/>
    <input  type="file"  name="files"  value=""/>
</form>

后台Controller层代码:

@RequestMapping("/add/submitQuestion")
public String submitQuestion(@RequestParam("files") CommonsMultipartFile[] files) throws Exception{
        String picUrl = "";
        for(int i=0;i<files.length;i++){
            if(!"".equals( files[i].getOriginalFilename() )){  
                    //拿到上传文件的输入流
                    InputStream in=(InputStream)files[i].getInputStream();
                    String fileName =files[i].getOriginalFilename();
                    //获取图片最后三位
                    String subStr = fileName.substring(fileName.length() -3, fileName.length());
                    //把输入流转换为二进制
                    byte[] b = submit.toByte(in);
                    ....代码未完,关键代码已经列出。

还可参考:完整的代码参考
2.图片显示
页面直接用标签
jsp页面:

<img src="/showPic?info_files='+arr[i]+'"/>

后台代码:

@RequestMapping("/showPic")
public void showPic(@RequestParam("info_files") String info_files,HttpServletRequest request,HttpServletResponse response) throws Exception{
        if(info_files != null && !"".equals(info_files)){
            .....
            //获取图片输入流,一定要获取输入流InputStream后放到byte[]数组使用OutputStream输出
            List<InputStream> list =  pic.showPic(info_files);
            for(int i=0;i<list.size();i++){
                InputStream fis= list.get(i);
                response.setContentType("image/*");
                ServletOutputStream os=response.getOutputStream();
                int count = 0;
                byte[] buffer = new byte[fis.available()];
                while ( (count = fis.read(buffer)) != -1 ){
                     os.write(buffer, 0, count);
                     os.flush();
                    }
                os.flush();
                os.close();
            }                           
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值