JAVA 二十五 IO流,字符流

JAVA 二十五 IO流,字符流

标签: JAVA


文件读取

读取方式一

package com.io;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {
    public static void main(String[] args){
        FileReader fr = null;
        try {
            fr = new FileReader("D:\\input\\text.txt");
            try {
                int c =0;
                //每次读取一个字符
                while((c=fr.read())!=-1){                          //加小括号 改变优先级,在while判断中完成赋值+循环,每循环一次判断一次,则每次判断都会调用fr.read();
                System.out.print((char)c);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(fr!=null){
                try {
                    fr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

读取方式二

package com.io;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo2 {
    public static void main(String[] args){
        FileReader fr = null;
        try {
            fr = new FileReader("D:\\input\\text.txt");
            char cbuf[ ] = new char[102];
            int c = 0;
            try {
                while((c=fr.read(cbuf))!=-1){    //fr.read(cbuf));返回值是chuf读取的字符串长度若达到数组最长则返回102,若不够,读取多少返回多少
                    System.out.print(new String(cbuf,0,c));
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(fr!=null){
                try {
                    fr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

文件写入

package com.io;

import java.io.FileWriter;
import java.io.IOException;

/*
 * IO流,处理设备之间的数据传输
 * 按流向来分:输入流和输出流
 * 根据操作的数据类型来分:字节流和字符流
 * 
 * 
 * 字符流的两个基类:
 * Reader 和 writer
 * 
 */
public class FileWriterDemo {
    public static void main(String[] args){
        FileWriter fw = null;
        try {
            fw = new FileWriter("D:\\input\\text.txt",true);//第二种构造方法,(地址,true),后面的新创建的都是追加在旧的字符之后

            fw.write("ASSDFASFKLJALKJF", 0, "ASSDFASFKLJALKJF".length());
            fw.flush();//FileWriter执行完成该方法内容才真正保存到txt中
            fw.write("poiii");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                fw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

Buffered带缓冲区的读取

package com.io;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
 * 字符读取缓冲区BufferedReader
 * 提供了一个一次读取一行的方法readLine
 * 当返回Null的时候,表示数据读取结束
 */
public class BufferReaderDemo {
    public static void main(String [] args){
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("D:\\input\text.txt"));
            String line = "";
            int num = 1;
            try {
                while((line=br.readLine())!=null){
                    System.out.println(num+"\t"+line);
                    num++;
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

带Buffered缓冲区的写入

package com.io;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterDemo {
    public static void main(String[ ] args){
        BufferedWriter bw =null;
        FileWriter fw = null;
        try {
            //创建一个字符写入文件流
            fw = new FileWriter("D:\\input\\test1.txt");
            //为了提高字符写入流的效率,加入了缓冲技术
            //只要讲要被提高效率的流对象作为参数传递给缓冲区的构造方法即可
            bw = new BufferedWriter(fw);
            bw.write("poiuy");
            bw.newLine();//提供一个跨平台的换行符
            bw.write("poiuy");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(bw!= null){
                try {
                    bw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(fw!=null){
                try {
                    fw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值