博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
输入输出流——字节流部分
阅读量:6241 次
发布时间:2019-06-22

本文共 10017 字,大约阅读时间需要 33 分钟。

在文件之后 比较合适出现的 就是 关于 流的操作了。

猜想关于数据的写入和写出操作,本质上是01形式的二进制数,而这些数据的排列方式是不能乱套的。他们是一个有序的整体,这队长长的用于表示一些内容的东西就称作流了。在这里面用Stream 来标识。

 java.io 包中定义了多个流类,用来实现输入/输出功能,以不同的角度可以分类为:

   1、按数据流的方向分为输入和输出。

   2、按数据处理的单位分为字节流和字符流。

   3、按功能不同分为节点流和处理流。

package IOPart;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class IOPart {        public static void main(String[] args) {        /**         * 在F:\tryFile目录下,创建一个a.txt 文件,修改里面的内容为:used to try the first demo of inputStream.         */        try {            //如果 在这个 路径找不到 这样一个 文件的话,就会报出,文件未找到异常,所以 要用 FileNotFoundException 包裹            FileInputStream fileInputStream = new FileInputStream(new File("f:\\tryFile\\a.txt"));            byte[] contents = new byte[1024];            fileInputStream.read(contents);//这里会报一个 读写异常,再从文件流往内存中的数组中写入数据的时候,可能会出现问题,需要用IOException包裹一下            String result = new String(contents);            System.out.println(result);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

运行结果:

used to try the first demo of inputStream.

//这个编辑器还真是高级,自动抹掉了我后面茫茫多的空格。事实上因为 我们 创建了一个 长达 1024个 bite位的数组。所以。有多少读多少,没有填空,补足。这样就会有弊端,我们要存储的数据的内容的大小不确定,那么这个 byte给多大合适呢?

方案一:

package IOPart;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class IOPart {        public static void main(String[] args) {        /**         * 在F:\tryFile目录下,创建一个a.txt 文件,修改里面的内容为:used to try the first demo of inputStream.         */        try {            //如果 在这个 路径找不到 这样一个 文件的话,就会报出,文件未找到异常,所以 要用 FileNotFoundException 包裹            FileInputStream fileInputStream = new FileInputStream(new File("f:\\tryFile\\a.txt"));            byte[] contents = new byte[fileInputStream.available()];            fileInputStream.read(contents);//这里会报一个 读写异常,再从文件流往内存中的数组中写入数据的时候,可能会出现问题,需要用IOException包裹一下            String result = new String(contents);            System.out.println(result);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

流作为资源的一种使用之后是要关闭的。

package IOPart;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class IOPart {        public static void main(String[] args) {        /**         * 在F:\tryFile目录下,创建一个a.txt 文件,修改里面的内容为:used to try the first demo of inputStream.         */        FileInputStream fileInputStream=null;        try {            //如果 在这个 路径找不到 这样一个 文件的话,就会报出,文件未找到异常,所以 要用 FileNotFoundException 包裹            fileInputStream = new FileInputStream(new File("f:\\tryFile\\a.txt"));            byte[] contents = new byte[fileInputStream.available()];            fileInputStream.read(contents);//这里会报一个 读写异常,再从文件流往内存中的数组中写入数据的时候,可能会出现问题,需要用IOException包裹一下            String result = new String(contents);            System.out.println(result);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally {            if(fileInputStream!=null){                try {                    fileInputStream.close();                } catch (IOException e) {
e.printStackTrace(); } } } }}

这种抽取形式,还是比较重要的。

方式二:

package IOPart;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class IOPart {        public static void main(String[] args) {        IOPart ioPart = new IOPart();        ioPart.method2();            }    private void method2() {        FileInputStream fileInputStream = null;        try {            fileInputStream= new FileInputStream(new File("f:\\tryFile\\SendPart.java"));            byte[] contents = new byte[1024];            int length = 0;            while((length=fileInputStream.read(contents))!=-1){                System.out.println(new String(contents,0,length));            }        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        finally {            if(fileInputStream!=null){                try {                    fileInputStream.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    private void method1() {        /**         * 在F:\tryFile目录下,创建一个a.txt 文件,修改里面的内容为:used to try the first demo of inputStream.         */        FileInputStream fileInputStream=null;        try {            //如果 在这个 路径找不到 这样一个 文件的话,就会报出,文件未找到异常,所以 要用 FileNotFoundException 包裹            fileInputStream = new FileInputStream(new File("f:\\tryFile\\a.txt"));            byte[] contents = new byte[fileInputStream.available()];            fileInputStream.read(contents);//这里会报一个 读写异常,再从文件流往内存中的数组中写入数据的时候,可能会出现问题,需要用IOException包裹一下            String result = new String(contents);            System.out.println(result);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally {            if(fileInputStream!=null){                try {                    fileInputStream.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}

写出:

package IOPart;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class OutputDemo1 {    public static void main(String[] args) {                FileOutputStream fileOutputStream = null;        try {            fileOutputStream = new FileOutputStream(new File("F:\\tryFile\\output.txt"));            String contentString = new String("lifei");            fileOutputStream.write(contentString.getBytes());            System.out.println("写出成功");        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally {            if(fileOutputStream!=null){                try {                    fileOutputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}

字节流拷贝文件:

package IOPart;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class CopyFile1 {        public static void main(String[] args) {                method2();            }    private static void method2() {        FileInputStream fileInputStream = null;        FileOutputStream fileOutputStream = null;        try {
//C:\\Users\\Administrator\\Desktop\\震撼世界的演讲《梦想》 标清(270P).qlv //fileInputStream = new FileInputStream(new File("f:/tryFile/SendPart.java")); /** * 这里面还可以复制的有 视频文件,音频文件,其实就是 各种文件了,只要把要拷贝的文件,放在FileInputStream里面就可以了。当然针对字符 还有专门为字符打造的操作流对象。 */ fileInputStream = new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\震撼世界的演讲《梦想》 标清(270P).qlv")); fileOutputStream = new FileOutputStream(new File("f:/tryFile/copy.qlv")); byte[] contents = new byte[1024]; int length = 0; while((length=fileInputStream.read(contents))!=-1){ fileOutputStream.write(contents, 0, length); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(fileInputStream!=null){ try { fileInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fileOutputStream!=null){ try { fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("复制完成"); } private static void method1() { FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; try { fileInputStream = new FileInputStream(new File("f:/tryFile/SendPart.java")); fileOutputStream = new FileOutputStream(new File("f:/tryFile/copy.txt")); byte[] contents = new byte[fileInputStream.available()]; fileInputStream.read(contents); fileOutputStream.write(contents); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(fileInputStream!=null){ try { fileInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fileOutputStream!=null){ try { fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } System.out.println("复制完成"); }}

 

转载于:https://www.cnblogs.com/letben/p/5184253.html

你可能感兴趣的文章
Scriptcase价格调整(五折销售)
查看>>
【转】 编写C#调用的C++DLL
查看>>
Programming Concepts
查看>>
【Linux】用grep在文档中查找内容
查看>>
音视频编码格式和封装格式的关系和区别是什么?
查看>>
ORACLE 表空间使用率查询
查看>>
cadence制作封装要素
查看>>
Web实时通信
查看>>
dump java
查看>>
VTK中获取STL模型点的坐标以及对其进行变换
查看>>
Sql Server内置函数实现MD5加密
查看>>
2017-2018-1 期中教学检查教师自查表
查看>>
Attention[Content]
查看>>
docker下部署spring boot
查看>>
【Android Studio安装部署系列】十九、Android studio使用SVN
查看>>
java 按概率产生
查看>>
设计模式(26)-----创建型模式-----建造者模式
查看>>
excel读写技术-:ADO.NET 如何读取 Excel
查看>>
纯前端表格控件SpreadJS与Java结合,实现模板上传和下载等功能
查看>>
推荐 5 款超好用的 Chrome 浏览器插件,文末有从别人的电脑移植插件的方法
查看>>