文件的读取与写入

一、文件类的继承关系

 

二、文件读取

1.按字符读取

如果我们要取的数据基本单位是单个字符,那么用这种方法读取文件就比较适合。比如:txt文件如下,我们需要取出其中的每一个字母存入一个数组中。

利用FileReader中的read()方法。FileReader.read(char[] cbuf),参数——cbuf是目标缓冲区;返回——读取的字符串数量,如果已达到末尾则返回-1。

实现如下:

        int num=0;
        char[] buf=new char[1024];
        //打开文件
        FileReader fr = new FileReader("text.txt");
        //取出字符存到buf数组中
        while((num=fr.read(buf))!=-1) {
                        //String(char[] cbuf,a,b),从cbuf的位置a开始取出连续的b个char组成字符串
            System.out.println(new String(buf,0,num));;
        }
                //检测一下是否取到相应的数据
        for(int i=0;i<10;i++) {
            System.out.print(buf[i]+" ");
        }

2.按行读取

如果我们想要读取的是一个字符串,前面所讲的第一种方法显然是不适用的,因此我们来介绍下另一种方法——按行读取数据。我们可以看下以下文件

每一行保存一个字符串,这样我们在读取文件的时候只需要按行读取即可。

利用BufferedReader中的readLine()方法。BufferedReader.readLine(),没有参数,返回——包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。

        int position=0;
        String[] bufstring=new String[1024];
        //打开带读取的文件
        BufferedReader br = new BufferedReader(new FileReader("text.txt"));
        String line=null;
        while((line=br.readLine())!=null) {
            bufstring[position]=line;
            position++;
        }
        br.close();//关闭文件
        for(int i=0;i<position;i++) {
            System.out.println(bufstring[i]);
        }

3.读取带分隔符的字符串

前面介绍的第一种方法不能读取字符串,第二种方法虽然可以读取字符串,但是由于每一行只能储存一个字符串,难免会觉得有些浪费空间。因此我们就会想,有没有一种能利用分割符来分割读取字符串的方法。JAVA中好像是没有这种API,但是我们如果对第一种方法进行一些后续处理,也可以达到这种效果。比如我们要读取的文件如下:

很明显,分隔符就是中文字符“,”。我们首先把文件中的字符都读取到字符数组buf中,再遍历字符数组,每遇到一个分隔符就保存一次字符串。

代码如下:

//依次读取一个字符,读到最后没有了就返回-1。有分隔符号
        ArrayList<String>stringlist=new ArrayList();//储存待读取的字符串
        FileReader fr = new FileReader("text.txt");
        while((num=fr.read(buf))!=-1) {
            System.out.println(new String(buf,0,num));;
        }
        //对字符串进一步处理
        String temp="";
        for(int i=0;i<buf.length;i++) {
            if(buf[i]==',') {//注意文件中的分隔符是中文还是英文字符
                stringlist.add(temp);
                temp="";
            }else {
                temp+=buf[i];
            }
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值