Java基础之读写文件

IO流主要用于传输数据,按照数据种类,分为字节流字符流

  • 字节流:可以处理任意一种数据;
  • 字符流:只能处理纯文本数据(char类型,文字,没有颜色、声音等,凡是用默认记事本可以打开的)。(其实其底层也是字节)

1.写文件FileWriter

如果希望将数据写到纯文本文档中,可以使用FileWriter类。

1.1使用方法

1.导包

 import java.io.FileWriter;

2.创建,构造方法

public FileWriter(String fileName);
FileWriter fw = new FileWriter("file01.txt");

注意:文件扩展名只能决定默认用什么软件打开文件,不能决定其内容
3.使用,成员方法
写数据:public void write(String str):需要写到文件中的字符串
关闭流:public void close();关闭流,释放相关资源。

public FileWriter(String fileName,boolean append)://第二个参数如果是true,则追加内容到文件fileName中

换行效果:

  • 换行其实也是一种字符,叫做换行符
  • Windows中换行符是:\r\n 两个字符
  • macOS当中是:\n
  • Linux中是:\n
public class DemoFileWriter {
    public static void main(String []args) throws IOException{
        ///构造打开
        FileWriter fw = new FileWriter("feng.txt");
        ///写数据
        fw.write("BUAA");
        fw.write("fengqiangguo");

        ///换行符(Windows换行符:\r\n)
        fw.write("\r\nJungle");
        ///关闭
        fw.close();
    }
}

这里写图片描述

1.2write的5种重载

  • public void write(int ch):参数是单个文字对应的数字(对应ASCII或者unicode表);
  • public void write(String str):写字符串
  • public void write(String str, int offset, int count):写字符串中的一部分内容
  • public void write(char[] array):写一个完整的字符数组;
  • public void wirte(char[] array, int offset,int count):写字符数组中的一部分内容;
public class FileWriteOverload {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        //写单个字符
        FileWriter fw = new FileWriter("file01.txt");
        fw.write(65);//A
        fw.write(48);//0
        fw.write(97);//a

        //写完整的字符串
        fw.write("Hello world");

        //写字符串的一部分
        String str = "Jungle是一个用Qt的工业机器人";
        fw.write(str,7,11);//一个用Qt的工业机器人

        //写一个完整的字符数学组
        char[] array = {'J','U','N','G','L','E'};
        fw.write(array);
        fw.close();
    }
}

这里写图片描述

2.读文件FileReader

FileReader用来将文本文件中的字符读取到程序中
1.导包:

import java.io.FileReader;

2.创建,构造方法:public FileReader(String fileName);

 FileReader fr = new FileReader("fielname.txt");

3.读取,成员方法
读取单个字符:public int read():读取下一个字符,得到对应的ASCII或Unicode值;
当文件中没有更多字符时,读出的值是-1
关闭流,释放资源:public void close();

读取字符数组
public int read(char[] buf):一次读取整个字符数组的数据
参数是一个字符数组,用来承载多个字符
返回值:代表的是读取到的数组中的有效个数

public class DemoFileReader {
    public static void main(String[] args) throws IOException {

        //不存在的文件不能读
        //FileReader fr = new FileReader("noExist.txt");
        FileReader fr = new FileReader("feng.txt");

        int num = fr.read();
        System.out.println(num);
        num = fr.read();
        System.out.println(num);
        fr.close();
    }
}

这里写图片描述
例:完整读取文本文件中的字符

        FileReader fr = new FileReader("feng.txt");
        //当文件中没有更多字符时,读出的值是-1
        int num;
        while((num = fr.read())!=-1) {
            System.out.println((char)num);//通过类型转换翻译为文字
        }

例:使用字符数组读取

FileReader fr = new FileReader("feng.txt");

        int num;
        char[] array = new char[5];//一次读取5个字符
        num = fr.read(array);
        System.out.println(num);

        // 使用字符数组中的有效部分来创建字符串
        String str = new String(array,0,num);
        System.out.println("len = "+str);
        fr.close();

这里写图片描述
例:完整读取文本文件

public class DemoFileReader {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("feng.txt");
        int num;
        char[] array = new char[10];//一次读取10个字符
        //读取文件的方法
        while((num = fr.read(array))!=-1) {
            String string = new String(array,0,num);
            System.out.println(string);
        }
        fr.close();
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_21107433/article/details/81133723