**

使用IO流读取数据

**

最近没事,就整理了一下Java中使用IO流去读取文档,上传,下载图片和移动文档或图片的类和方法,希望可以帮助到大家更好的掌握IO的读写技巧,下面我会关于这些内容做一个详细的展示,仅供大家参考。

使用IO读取文件数据

public static void copyFile(String oldFile, String newFile){
        //创建一个输入流
        FileInputStream is =null;
        //创建一个输出流
        FileOutputStream os =null;
        try {
            is = new FileInputStream(oldFile);
            os = new FileOutputStream(newFile);
            //创建一个缓冲区,用于一次性读取多个字节
            byte[] data = new byte[1024];
            //读取每次读取的字节数量
            int len = -1;
            while ((len=is.read(data))!=-1){
                //把每次读取到的数据写到一个新的文件夹里面
                os.write(data,0,len);
                System.out.println("复制成功!");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (os != null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
public class Practice {
    public static void main(String[] args) {
        String oldFile ="";
        String newFile ="";
        FileUtil.copyFile(oldFile,newFile);
    }
}

通过上面的代码,我们可以实现用代码实现文档的复制粘贴功能。即使是跨计算机或者跨地区,我们也可以实现文件的复制和粘贴的功能。

使用IO流实现图片的上传和下载功能

public class TestInput_OutputStream {
    public static void main(String[] args) {
        //输入流
        FileInputStream fis = null;
        DataInputStream dis = null;
        //输出流
        FileOutputStream fos = null;
        DataOutputStream dos = null;

        try {
            //读取相关二进制文件
            fis = new FileInputStream("图片路径");
            dis = new DataInputStream(fis);
            //输出二进制相关文件路径
            fos= new FileOutputStream("复制到的路径");
            dos= new DataOutputStream(fos);

            byte[] data = new byte[1024];
            int len = -1;
            while ((len=dis.read(data))!=-1){
                dos.write(data,0,len);
            }
            //验证是否成功,我们可以在这里加上一个判断
            System.out.println("文件复制成功!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (dos!=null){
                try {
                    dos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

总结

其实,在实现这些功能的过程中,有几点还是需要我们去注意的,比如,在完成操作之后,对于流的关闭,如果不关闭的话,可能会出现一些问题,其次就是对于路径的填写,这个就因人而异了,我个人还是喜欢写相对路径,毕竟相对路径使用起来比较方便,绝对路径固然是比较准确,但是,绝对路径写起来会比较繁琐。