10.3 io流 正篇 FileReader FileWriter读写代码

一、FileWriter

小节:

1)FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。
2)\n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
 *         windows:\r\n
 *         linux:\n
 *         mac:\r3)
//        String(char[] value):把字符数组的数据封装成字符串对象
//        String s = new String(arr);
//        System.out.println(s);
        System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。4)

1.一次写一个写字符串

package day10_io_fileWrite_Read.write;
/* FileWriter:
        *         FileWriter(String fileName):传递一个文件名称
        *
        * 输出流写数据的步骤:
        *         A:创建输出流对象
        *         B:调用输出流对象的写数据的方法
        *         C:释放资源
        */
import java.io.FileWriter;
import java.io.IOException;
/*
flush():刷新缓冲区。流对象还可以继续使用。
close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
*/

public class FileWriterDemo01 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("d:\\java\\demo\\demo001\\src\\day10_io_fileWrite_Read\\a.txt");
        fw.write(97);//二进制转换为字符
        fw.write("\r\n你好");

        //数据没有直接写到文件,其实是写到了内存缓冲区
        fw.flush();

        //释放资源
        //通知系统释放和该文件相关的资源
        fw.close();
    }
}

输出如下:

2.一次写一个字符数组

package day10_io_fileWrite_Read.write;

import java.io.FileWriter;
import java.io.IOException;
/*
 * void write(String str):写一个字符串数据
 * void write(String str,int index,int len):写一个字符串中的一部分数据
 * void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。‘a‘,97
 * void write(char[] chs):写一个字符数组数据
 * void write(char[] chs,int index,int len):写一个字符数组的一部分数据
 *
 * *如何实现数据的换行?
 *         \n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
 *         windows:\r\n
 *         linux:\n
 *         mac:\r
 * 如何实现数据的追加写入?
 *         FileWriter(String fileName, boolean append)
 */
public class Fw_array02 {
    public static void main(String[] args) throws IOException {
//        FileWriter fw = new FileWriter("a.txt"); //相对路径a.txt存在于程序项目的同级目录下。
        FileWriter fw = new FileWriter("a.txt",true);//表示追加写入,默认是false。正常情况:执行多次程序输出会被覆盖。写追加true后会在之前基础上写入。

        /*
        fw.write("hello\r\n");
        //从index1开始写到3结束
        fw.write("hello",1,3);
        //换行
        fw.write("\r\n");
        */

        //写字符数组数据
        char[] arr  = {‘a‘,‘b‘,‘c‘,‘d‘};
        fw.write(arr);

        fw.write(arr,1,2);

        fw.close();
    }
}

输出如下:

二、FileReader

1.一次读取一个字符串

package day10_io_fileWrite_Read.read;

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

public class FileReaderDemo03 {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("b.txt");
/*
        //第一次读
        int ch = fr.read();
        System.out.println(ch);//打印的是字符值
        System.out.println((char)ch);

        //第二次读
        ch = fr.read();
        System.out.println(ch);
        System.out.println((char)ch);//通过测试,我们知道,如果读取数据的返回值是-1的时候,就说明没有数据了,这也是我们循环的结束条件
        */

        //用循环来读取数据
        int ch1;
        while((ch1=fr.read())!=-1) {
            System.out.print((char)ch1); //注意print是不换行,println是换行
        }
        fr.close();

    }
}

输出如下:

2.一次读取一个数组

package day10_io_fileWrite_Read.read;

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

/*
* 读取数组数据方法
* */
public class Fr_array04 {
    public static void main(String[] args) throws IOException {

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

        //动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];
        char[] arr = new char[5]; //一次读取一个字符数组的数据,返回的是实际读取的字符个数

        /*
        //读取一次
        int len = fr.read(arr);

        System.out.println("len:"+len);
//        String(char[] value):把字符数组的数据封装成字符串对象
//        String s = new String(arr);
//        System.out.println(s);
        System.out.println(new String(arr)); //通过构造方法将字符数组转换为字符串。
        System.out.println(new String(arr,1,3));

        fr.close();
        */

        //循环读取
        FileReader fr1 = new FileReader("c.txt");
        char[] arr1 = new char[5];
        int len1;
        while((len1=fr1.read(arr1))!=-1) {
            System.out.print(new String(arr1));
        }
        fr1.close();
        }
    }

输出如下:

三、copy 用io流实现cp文件

1.一次读写一个字符

package day10_io_fileWrite_Read.copy;

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

//一次读写一个字符
//先读再写
public class CopyDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("c.txt");
        FileWriter fw = new FileWriter("copy.txt");

//        //读写一次
//        System.out.println(fr.read());
//        fw.write(97); // fw.write(fr.read());

        //循环读写
        int len;
        while((len=fr.read())!=-1) {
            fw.write(len);
        }

        fw.flush();
        fw.close();
        fr.close();
    }
}

2.一次读写一个数组

package day10_io_fileWrite_Read.copy;

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

public class CopyArrayDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("c.txt");
        FileWriter fw = new FileWriter("copy1.txt");

        char[] arr = new char[5];
        int len;
        while((len=fr.read(arr))!=-1) {
            fw.write(arr);
        }

        fw.close();
        fr.close();
    }
}

原文地址:https://www.cnblogs.com/longesang/p/11083476.html

时间: 2024-11-06 15:14:58

10.3 io流 正篇 FileReader FileWriter读写代码的相关文章

java FileReader/FileWriter读写文件

java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { int a = 0; fr = new FileReader("c:/a.txt");//读取目标 fw = new FileWriter("c:/b.txt")

java的io流基础篇乱码的原因

1.编码的产生:我们的存储的基本单元是一个byte字节,然而人类的语言太多,无法用一个基本单元来表示,然而为了拆分或者一些相应的翻译工作,导致了编码的产生 2.常见的编码格式 ASCll :用一个字节的低7位共128个来表示,0-31表示控制字符,32-126表示打印字符, ASCll的二进制第一位也就是最高位,目的是用来做奇偶检验的,所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种.奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高

java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例

FileInputStream   <span style="font-family:Verdana;">import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class TestFileInputStream { public static void main(String[] args) throws Exception { // 异常抛出, 不处理

小白看了就会用IO流的文章

目录 此文章适合于和我一样还在学习Java基础的小白,若正准备接触IO流,那这篇文章正适合,因为在前期会用IO流便好,所以没有太多的深究其底层原理,建议电脑阅读,文章有点长|??ω?` ) 注意:我们只需要重点理解输入流和输出流的区别,还要在面对不同的传输数据特性来选择正确的流进行使用.在最后有一些思考题和一道公司面试题. @ 一.流的介绍 首先我们先了解一下什么是流:流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流.如下图: 而流的作用:能让大家自由地控制文件

文件传输基础——Java IO流

第一章 文件的编码 package com.imooc.io; public class EncodeDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s="欢迎你ABC"; byte[] byte1=s.getBytes(); for (byte b : byte1) { //把字节转换成16进制的方式显示 Sys

JavaEE基础(二十一)/IO流

1.IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2.FileReader FileReader类的read()方法可以按照字符大小读取 FileReader fr = new FileReader("aaa.txt"); //创建输入流对象,关联aaa.txt int ch; while((ch = fr.read()) != -1) {

JavaEE基础(二十二)/IO流

1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: SequenceInputStream(InputStream, InputStream) FileInputStream fis1 = new FileInputStream("a.txt"); //创建输入流对象,关联a.txt FileInputStream fis2 = new F

JavaEE基础(二十)/IO流

1.IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便. 2.IO流常用父类 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer 3.IO程序书写 使

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/* * 1.理解 "流" ? * 动态性.连续性.方向性. * * 2.在java语言中,将数据的输入/输出称之为 IO流. IO流的分类: * 1) 从方向分: 输入流 , 输出流. (参照计算机的内存) * 将数据送到内存中去称之为输入流.反之,称之为输出流. * * 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据). * * 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上). * * 3.在Java语言中,所有流类均来自