Java中的四套读写方案

一.字节流读写方案

FileInputStream:字节流方式读取文本文件

FileoutputStream:字节流写入硬盘

二.字符流读写方案

FileReader:字符流读取文本

FileWriter:字符流写入文本

三.

BufferedReader:自定义缓存大小,读取文本8192个char

BufferedWriter:写入文本

一般和FileReader和FileWriter连用

四.可以读取二进制(img图片等)

DataInputStream:将本地的img加载到内存中

DataOutputStream::将内存中的二进制数据写入到硬盘上的某个文件中。

1.使用字节流读取文本文件

//字节输入流练习:从文本文件读取各种数据(字母,字符串都支持)

//声明流对象

try {

FileInputStream fis=new FileInputStream("c:\\ming.txt");

int data;

System.out.println("可读取的字节数:"+fis.available());

System.out.println("文件内容为:");

//循环读取数据

byte[] buffer=new byte[1024];

StringBuilder sb=new StringBuilder();

while ((data=fis.read(buffer))!=-1) {

//byte[]转为字符串

String str=new String(buffer,0,data,"gb2312");

sb.append(str);

}

System.out.println(sb.toString());

} catch (Exception e) {

}
3.使用字节流写文本文件
 // 通过字节流将内存中的数据写入到硬盘上
        FileOutputStream fos=null;
        try {
            String str="呵呵";
            byte[] words=str.getBytes("gb2312");
            //创建流对象,一追加方式写入文件
            fos=new FileOutputStream("c:\\ming.txt",true);
            //写入文件
            fos.write(words,0,words.length);
            System.out.println("文件已更新");
        } catch (Exception e) {
            System.out.println("创建文件时出错!");
        }finally{
            try {
                if (fos!=null) {
                    fos.close();
                }
            } catch (Exception e2) {
               e2.printStackTrace();
            }
        }
4.使用字符流读取文本文件
//使用字符流读取文本文件
        Reader fr=null;
        try {
             fr=new FileReader("c:\\ming.txt");
            char[] ch=new char[1024];//中转站,缓冲区
            StringBuffer sbf=new StringBuffer();
            int length=fr.read(ch);//将字符读入数组
            //循环读取并追加字符
            while (length!=-1) {
                sbf.append(ch,0,length);
                length=fr.read(ch);
            }
            System.out.print(sbf);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            try {
                if (fr!=null) {
                    fr.close();
                }
            } catch (Exception e2) {
                // TODO: handle exception
            }
        }
5.使用字符流写文本文件
//使用字符流写文本文件
        FileWriter fw=null;
        try {
            fw=new FileWriter("c:\\ming.txt",true);
            //写入信息
            String words="叶丽仪-上海滩";
            fw.write(words);
            fw.flush();
            System.out.println("写入成功");

        } catch (Exception e) {
            System.out.println("文件不存在");
        }finally{
            try {
                if (fw!=null) {
                    fw.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
// 字符输入流BufferedReader读取文件
        FileReader fr=null;
        BufferedReader br=null;
        try {
            //创建一个FileReader对象
            fr=new FileReader("c:\\ming.txt");
            //创建一个BufferedReader对象
            br=new BufferedReader(fr);
            //读取一行数据
            String line=br.readLine();
            while (line!=null) {
                System.out.println(line);
                line=br.readLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if (br!=null) {
                    br.close();
                }if (fr!=null) {
                    fr.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
使用MyBufferedWriter来写入文本文件
        FileWriter fw=null;
        BufferedWriter bw=null;
        try {
            fw=new FileWriter("c:\\ming.txt",true);
            bw=new BufferedWriter(fw);
            //写入信息
            bw.write("故乡的原风景");
            bw.newLine();
            bw.write("城里的月光-许美静");
            bw.flush();
            fw.close();

            //读取文件内容
            FileReader fr=new FileReader("c:\\ming.txt");
            BufferedReader br=new BufferedReader(fr);
            String line=br.readLine();
            while (line!=null) {
                System.out.println(line);
                line=br.readLine();
            }
        } catch (Exception e) {
            System.out.println("文件不存在");
            e.printStackTrace();
        }finally{
            try {
                if (bw!=null) {
                    bw.close();
                }
                if (fw!=null) {
                    fw.close();
                }
            } catch (Exception e2) {
                // TODO: handle exception
            }
        }
使用字节流类DataOutputStream写二进制文件
        DataOutputStream out=null;
        DataInputStream dis=null;
        try {
            //创建输入流对象
            FileInputStream fis=new FileInputStream("c:\\范宁.jpg");
            dis=new DataInputStream(fis);
            //创建输出流对象
            FileOutputStream outFile=new FileOutputStream("c:\\范宁小美女33.jpg");
            out=new DataOutputStream(outFile);
            int temp=dis.read();
            while (temp!=-1) {
                out.write(temp);
                temp=dis.read();
            }
            System.out.println("复制成功");
            fis.close();
            outFile.close();
        } catch (Exception e) {
            System.out.println("文件不存在");
        }finally{
            try {
                if (dis!=null) {
                    dis.close();
                }
                if (out!=null) {
                    out.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
上一篇:【BZOJ-2597】剪刀石头布 最小费用最大流


下一篇:最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!