JAVA FileWriter和FileReader在java中的应用

FileWriter类在java中的使用:

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

/*
* FileWriter:
* FileWriter(String fileName):创建一个文件名称
* 输出流写数据的步骤:
 *  1 创建输出流对象
 *  2 调用输出流对象写数据的方法
 *  3 刷新
 *  4 释放资源
 *  */
public class FileWirterDemo {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("D:\\a.txt");
        //创建输出流对象做了哪些事情:
        // 1 调用系统资源创建了一个文件
        // 2 创建输出流对象
        // 3 把输出流对象指向文件
        fw.write("dadadada"); //数据没有直接写到文件中,而是写到了内存缓冲区
        fw.flush();
        fw.close();
        // 通知系统释放和文件相关的资源
    }
}
import java.io.FileWriter;
import java.io.IOException;

/*
* * 输出流写数据的步骤:
 *  1 创建输出流对象
 *  2 调用输出流对象写数据的方法
 *  3 刷新
 *  4 释放资源
 *  相对路径: 相对当前项目而言的,在项目的根目录下(a.txt)
 *  绝对路径:以盘符开始的路径  D://a.txt
 *  close() 和 flush()的区别
 *  flush():刷新缓冲区 流对象可以再被使用
 *  close():先刷新缓冲区 然后通知系统释放资源 流对象不可以在被使用了*/
public class FileWriterDemo2 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("D://a.txt");// 如果你没有写盘符 那么就是a.txt
        fw.write("涛哥牛逼");
        fw.flush();
        fw.close();
    }
}
import java.io.FileWriter;
import java.io.IOException;

/**/
public class FileWriteDemo3 {
    /*
    FileWriter 写数据的5个方法
    * void write(String str):写一个字符串数据
    * void write(String str,int index,int len): 写一个字符串中的一部分
     * void write(int ch): 写一个字符数据,这里写int类型的好处是既可以写char类型的数据 也可以写char 对应的int类型的值
     * void write(char[] chs):写一个字符数组数据
     * void write(char[] chs,int index,int len): 写一个字符数组的一部分数据*/
    public static void main(String[] args) throws IOException {
        FileWriter fw= new FileWriter("b.txt");
        //void write(String str):写一个字符串数据
        fw.write("abcde");
        fw.write("abced",1,3);
        fw.flush();
        fw.close();


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

/*
* 如何实现数据的换行
* \n 可以实现换行 但是window系统自带的记事本呢打开并没有换行 这是因为windows 是别的换行是/r/n
* windows /r/n
* Linux /n
* mac /n
* 如何实现数据的追加
* true的使用*/
public class FileWriterDemo4 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("c.txt",true); //表示可以追加写入 默认是false
        for (int i = 0; i < 10; i++) {
            fw.write("hello"+i+"\n");

        }
    }
}

FileReader类在java中的使用:

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

/*
* 需求:从文件中读数据并显示到控制台
*  读数据 -- 输入流 --FileReader
*  FileReader:
*  FileReader(String filename):传递文件名称
*  输入流读文件的步骤:
*  1 创建输入流对象
*  2 调用输入流对象的读取方法
* int  read() 返回的字符的int值
* * int  read(char [] cbuf): 一次读取一个字符数组的数据
*  3 释放资源*/
public class FileReaderDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("fr.txt");
        // 读取文件
        //System.out.print((char)fr.read());
        //System.out.print((char)fr.read());
        //System.out.print((char)fr.read());
        //这时我们发现代码的重复的特别高 我们开始考虑要不要使用循环
        // 通过测试 我们发现 如果读取的数据的返回值是-1时候 就说明没有数据了 就是循环的结束条件
        int ch;
        while((ch = fr.read())!=-1)
        {
            System.out.print((char)ch);
        }
        fr.close();
    }
}
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**  FileReader(String filename):传递文件名称
 *  输入流读文件的步骤:
 *  1 创建输入流对象
 *  2 调用输入流对象的读取方法
 * int  read(char [] cbuf): 一次读取一个字符数组的数据
 *  3 释放资源*/
public class FileReaderDemo2 {
    public static void main(String[] args) throws IOException {
        /*
        FileReader fr = new FileReader("fr2.txt");
        char [] chs = new char[5];
        int len = fr.read(chs); //len 不是读取的字符长度 而是实际读取的字符个数
        System.out.println("len"+len);
        System.out.println(new String(chs,0,len));
        len = fr.read(chs);
        System.out.println("len"+len);
        System.out.println(new String(chs,0,len)); //这里其实也读到了5个字符 不过它读到了hello后的\r\n
        len = fr.read(chs);
        System.out.println("len"+len);
        System.out.println(new String(chs,0,len));
        */
        // 第一次 hello
        // 第二次 \r\nwor
        //第三次 ld\r\nr
        // 我们发现读取代码的相似度很高 想用循环改进 但是不知道什么时候结束循环
        // 通过测试 我么发现 如果实际长度为-1时,就没有数据了
        FileReader fr = new FileReader("fr2.txt");
        char [] chs = new char[1024]; //这里可以是1024或者其整数倍
        int len;
        while((len=fr.read(chs))!=-1)
        {
            System.out.print(new String(chs,0,len)); // 0 - len 是为了防止得到自己不想要的数据
        }
        fr.close();


    }
}

猜你喜欢

转载自blog.csdn.net/yuzhentao123/article/details/88849778
今日推荐