I/O流

来源:互联网 发布:免费苹果恢复软件 编辑:程序博客网 时间:2024/05/17 06:10

字节流概念

两个抽象类InputStream和OutputStream


方法声明 功能描述 int read() 从输入流读取一个8位的字节,把它转换成0-255之间的证书,并返回这一整数 int read(byte[ ] b) 从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数 int read(byte[ ] b,int off,int len) 从输入流读取若干字节,把他们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目 void close() 关闭此输入流并释放与该流相关联的所有系统资源
方法声明 功能描述 int write() 向输出流写入一个字节 int write(byte[] b) 把参数b指定的字节数组中的所有字节写到输出流 int write(byte[] b,int off,int len) 将指定byte数组中从偏移量off开始的len个字节写入输出流 void flush() 刷新此输出流,并强制写出所有缓冲的输出字节 void close() 关闭此输入流并释放与该流相关联的所有系统资源

字节流读文件代码段

package com.tuoshang;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Zijieliu {    public static void main(String[] args) throws IOException {        //创建一个文件字节输入流        FileInputStream in = new FileInputStream("test.txt");        int b=0;        while(true){            b=in.read();//变量b记住读取的一个字节            if(b==-1){                break;            }               System.out.println(b);//否则将b打印出        }        in.close();    }}

FileOutputStream

它是操作文件的字节流输出流,专门用于把数据写入文件.

package com.tuoshang;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class ZijieliuOut {    public static void main(String[] args) throws IOException {        //创建一个文件字节输出流        FileOutputStream out=new FileOutputStream("example.txt");        String str="传智播客";        byte[] b=str.getBytes();//获取该文件字节表现形式并存在数组中        for (int i = 0; i < b.length; i++) {            out.write(b[i]);        }        out.close();    }}

如果通过FileOutputStream向一个已存在的文件中写入数据,那么该文件中的数据首先会被清空,再写入新数据.

若希望追加内容,需要使用FileOutputStream的构造函数FileOutputStream(String filename,boolean append)来创建文件输出流对象.

outoutStream out = new FileOutputStream("example.txt  true");

文件的copy

package com.tuoshang;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class Copy {    public static void main(String[] args) throws IOException {        //创建一个文件字节输出流,用于读取当前目录下source文件夹下的style.m4a文件        InputStream in=new FileInputStream("source\\style.m4a");        //创建一个文件字节输出流,用于讲读取的数据写入target目录下的文件中        OutputStream out=new FileOutputStream("tarfet\\style.m4a");        int len;//记住每一次读取的一个字节        long begintime=System.currentTimeMillis();//获取当前 系统时间        while((len=in.read())!=-1){//读取一个字节并判断是否读到文件末尾            out.write(len);//将读到的字节写入文件        }        long endtime=System.currentTimeMillis();        System.out.println(endtime-begintime);        in.close();        out.close();        }}

字节流的缓冲区

//以下是用缓冲区读取文件        byte[] buff=new byte[1024];        //定义一个int类型的变量len,记住读取读入缓冲区的字节数        int len;//记住每一次读取的一个字节        long begintime=System.currentTimeMillis();//获取当前 系统时间        while((len=in.read(buff))!=-1){//读取数据并存入buff.并且判断是否读到文件末尾            out.write(buff,0,len);//从第一个字节开始,向文件写入len个字节        }

使用缓冲区,减少了对文件的操作次数,所以可以提高读写数据的效率.


装饰设计模式

**待补充**

字符流

字符流定义及基本用法

两个顶级父类
1. Reader
2. Writer

FileReader和FileWriter用于读写文件
BufferedReader和BufferedWriter是具有缓冲功能的流

字符流操作文件

package com.tuoshang;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class ZifuFile {    public static void main(String[] args) throws IOException {        //创建一个FileReader对象用来读取文件中的字符        FileReader reader = new FileReader("reader.txt");        //定义一个变量用于读取的字符        int ch;        while((ch=reader.read())!=-1){//循环判断是否读到文件的末尾            System.out.println((char)ch);//不是字符流末尾就转为字符打印        }        reader.close();    }}

字符输入流的read()方法返回的int类型值,如果想获得字符就需要进行强制类型转换.


8.3其他IO流

8.3.1:ObjectInputStream和ObjectOutputStream

8.3.2:DataInputStream和DataOutputStream

8.3.3:PrinStream

8.3.4:标准输入输出流

8.3.5:PipedInputStream和PipedOutputStream

8.3.6:

#

#

#

8.4 File类

8.4.1 File的常用方法

方法的声明 功能描述 File(String pathname) 通过指定的一个字符串类型的文件路径来创建一个新的File对象 File(String parent,String child) 根据指定的一个字符串类型的父路径,和一个字符串类型的子路径,创建一个File对象 File(File parent ,String child) 根据指定的File类的父路径和字符串类型的子路径创建一个File对象

IO流的小作业-统计作业交的情况

直接上代码

package com.ibeifeng;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;/*io流的小作业*/   //作业_1_3_1_1_xxx.zippublic class Demo5 {    private static ArrayList<String> arrList = new ArrayList<String>();    public static void main(String[] args) {        try {            store();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    /**     * 统计作业提交的名单     * 统计作业未提交的名单     */    //获取学生名字的集合    public static void getNames() {        File file = new File("C:\\Users\\ibf\\Desktop\\studentWork");        String[] names = file.list();        for (String tmp : names) {            //字符串处理,把学生名字存储集合            System.out.println(tmp);            tmp = tmp.replaceAll("作业_1_3_1_1_", "");            tmp = tmp.replaceAll(".rar", "");            tmp = tmp.replaceAll(".zip", "");            System.out.println(tmp);            arrList.add(tmp);        }    }    //把学生名单存储在磁盘上    public static void store() throws IOException {        //获取学生名字的集合        getNames();        //创建写入对象        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\ibf\\Desktop\\stu.txt"));        //写入学生名字        for (String tmp : arrList) {            bw.write(tmp);            //bw.write("\r\n");//"\r"   "\n"    "\r\n"            bw.newLine();        }        //关闭资源        bw.close();    }}
0 0
原创粉丝点击