inputstream
/* 在java中InputStream是字节输入流,用来将文件中的数据读取到java程序中。 InputStream是所有字节输入流的顶层父类,是一个抽象类。如果要用,需要使用子类。 最常用的子类:fileinputstream。 构造方法: FileInputStream(File file): 传递一个File类型的文件 FileInputStream(String name): 传递一个String类型的文件路径 其他方法: int read(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1. int read(byte[] b): 一次读取一个字节数组,输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1. void close() 使用步骤: 1. 创建一个FileInputStream流对象,绑定一个数据源文件。 2. 调用read方法读取数据。 3. 释放资源 注意: 这种方式不能读取中文,一个中文占多个字节,此时一次读取一个字节会把中文拆开读。 */
public class Demo01InputStream { public static void main(String[] args) throws IOException { //创建一个FileinputStream对象,并绑定一个数据源文件 // 如果文件不存在,则会抛出异常(File not fount excep) FileInputStream fis = new FileInputStream("E:\\masm5\\aaa.txt"); //调用read方法读取数据 // int read(): 从文件中读取一个字节数的数据。并返回读取到的这个字节。 如果读取结束,返回的是-1. int i; while ((i = fis.read()) != -1) { /* 条件做了下面的事情 1. 通过fis输入流调用read方法,读取一个字节。 2. 把读取到的这个字节赋值给变量i。 3. 判断i是否不等于-1,如果不是-1表示读取到了内容,就在循环中对读取到的内容进行处理。 读取到的内容在i里面保存*/ System.out.print((char) i); } //释放资源demo02_inputsteam } }
使用字节输入流一次读取一个字节数组。 int read(byte[] b): 一次读取一个字节数组, 输入流会把读取到的内容放入到这个字节数组中,并返回读取到的个数, 如果读取结束返回-1. 这种读取方式效率高 */ public class Demo02InputStream { public static void main(String[] args) throws IOException { //创建Fileinptstream 流对象,并绑定源文件 FileInputStream fis=new FileInputStream("E:\\masm5\\aaa.txt"); //调用read方法读取数据. // // int read(byte[] b): 一次读取一个字节数组 // 会将数据读取到字节数组里面。 字节数组长度是几,那么就最多一次读取几个。 并 // 且返回读取到的个数,读取结束,返回-1 // // //使用循环,一次读取一个字节数组 // //定义一个字节数组,用来保存读取到的数据。 byte arr[]=new byte[3]; //定义一个变量来保存读到的个数 int len;//返回读取到的个数 //使用循环开始读取 while((len=fis.read(arr))!=-1){ /* 上面条件作了下面的事情: 1. 通过字节输入流fis调用read方法,将数据读取到Arr这个字节数组中 2. 将读取到的有效个数返回,赋值给len。 3. 判断len是否不等于-1,如果不等于-1,表示读取到了内容,就就在循环中进行处理. 读取出来的数组在bArr数组中放着 */ //最后一次读取可能会有上次残留的数据,所以不能把字节数组的整体都转成String //System.out.println(new String(bArr)); //读取到了几个内容,就把字节数组的几个元素转成字符串,并且打印 System.out.println(new String(arr,0,len)); } } }
文件复制。 文件复制其实就是一边读,一边写,每读取一次就把读取到的内容写到文件中。 为了保证复制效率,我们采用一次读取一个字节数组的方式进行复制 思路: 1. 创建字节输入流对象,用来读取 2. 创建字节输出流对象,用来写入。 3. 开始读取,一次读取一个字节数组。 4. 把读取到的字节数组的内容写入到目的地文件 5. 循环 第3步 和 第4步 6. 释放资源 */ public class Demo03Copy { public static void main(String[] args) throws IOException { //1. 创建字节输入流对象,用来读取 FileInputStream fis = new FileInputStream("E:\\masm5\\aa.jpg"); //2创建字节输出流对象,用来写入//没有会创建 Fileoutputstream fs = new FileOutputStream("zhongguo"); //3创建一个数组用来读取 byte arr[] = new byte[1024 * 8]; int len;//用来计数 while ((len = fis.read(arr)) != -1) { //从文件中用字节数组读取数组,存储到字节数组中 // 每读取到一个内容,就把读取到的内容写入到目的地文件 fs.write(arr,0,len); } //释放资源 fs.close(); fis.close(); } }
相关阅读
File file=new File("hello.txt"); if(file.exists()){ System.out.println("exit"); System.out.println(); try {
以前写东西,尤其是网络传输方面总会碰到将某种格式的文本或者图片等转幻成数据流的方式来传输,那时候用的就直接网上找点就粘贴,也没
InputStreamReader和OutputStreamWriter 的区别和用法
转自:https://blog.csdn.net/Appleyk/article/details/79639444一、InputStreamReader用于将一个字节流中的字节解码成字符 , 用法
Java 文件流一:字节流(FileInputStream 和 FileOutputSt
Java文件流操作是一个非常重要的内容。下图列举了关于Java基本的文件流操作,当然目前还有NIO,这个后来会进行讨论,先看基本的文件
详解OutputStream和InputStream Reader和Writer Inpu
OutputStream和InputStream 字节输入和输出流,有字节文件流,字节对象流。ObjectOutputStream是对象序列化用的。FileInputStream/Fi