JAVA学习笔记(三十二)- 字符流 FileReader & FileWriter

标题

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

/*
 * FileReader/FileWriter类
 * 文件字符输入输出流
 */
public class Test03 {
    public static void main(String[] args) throws IOException {
        test3();
    }

    // 文件字符输入流
    public static void test1() throws IOException {
        Reader reader = new FileReader("D:\\Java\\hello.txt");
        // 每次读取一个字符
        int data = reader.read();// 返回一个int类型的字符值
        while (data != -1) {
            System.out.println((char) data);
            data = reader.read();
        }
        reader.close();
    }

    // 文件字符输出流
    public static void test2() throws IOException {
        Writer writer = new FileWriter("D:\\Java\\hello.txt", true);
        writer.write("余书磊");
        writer.flush();
        System.out.println("使用字符输出流写入成功!");
        writer.close();
    }

    // 文件复制
    public static void test3() throws IOException {
        Reader reader = new FileReader("D:\\Java\\hello.txt");
        Writer writer = new FileWriter("D:\\Java\\hello_bak.txt");

        //方式一:每次复制一个字符
        int data = reader.read();
        while (data != -1) {
            writer.write(data);
            data = reader.read();
        }

        //方式二:每次复制一个字符数组
        char[] buffer=new char[10];
        int num=reader.read(buffer);//返回实际读取的长度
        while(num!=-1){
            writer.write(buffer, 0, num);
            num=reader.read(buffer);
        }

        //方式三:将读取的字符拼接到字符串中,再写入
        StringBuffer sb=new StringBuffer();
        int data = reader.read();
        while (data != -1) {
            sb.append((char)data);
            data = reader.read();
        }
        writer.write(sb.toString());

        writer.flush();
        System.out.println("文件复制成功!");
        writer.close();
        reader.close();
    }

    /*
     *  字符流无法复制二进制文件,字节流可以
     */
    public static void test4() throws IOException {
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\Java\\ascii.jpg"));
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\Java\\ascii_bak.jpg"));
        int data = bis.read();
        while (data != -1) {
            bos.write(data);
            data = bis.read();
        }

        bos.flush();
        System.out.println("文件复制成功!");
        bos.close();
        bis.close();
    }

}
时间: 2024-12-24 17:40:21

JAVA学习笔记(三十二)- 字符流 FileReader & FileWriter的相关文章

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional

JAVA学习笔记(三十四)- 字节打印流 PrintStream

PrintStream字节打印流 import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.io.Reader; /* * Pri

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客

Java学习笔记之 IO包 字符流

字符流:Writer/Reader(字符流) 通过子类FileWriter和FileReader实现父类实例化 package iotest; import java.io.File; import java.io.Writer; import java.io.Reader; import java.io.FileWriter; import java.io.FileReader; public class OutputStreamDemo2 { public static void main(

JAVA学习笔记(三十九)- 线程优先级

线程优先级 /* * 线程优先级,范围[1,10] * 不同优先级的线程获取执行的机会不同,优先级越高,执行机会越大 * * 对比不同优先级的线程被执行的机率 */ public class Test05 { public static void main(String[] args) { System.out.println("最大优先级:" + Thread.MAX_PRIORITY); System.out.println("最小优先级:" + Thread.

JAVA学习笔记(三十五)- 随机读写文件 RandomAccessFile

RandomAccessFile类 /* * RandomAccessFile类,随机读写文件 * * 数据分段要有规律,每段大小相等,可以将每段数据设置为较大的值,足以存在每一个段的数据 * */ public class Test04 { public static void main(String[] args) throws IOException { //writeFile(); readFile(); } // 写入数据 public static void writeFile()

JAVA学习第三十二课(常用对象API)- 基本数据类型对象包装类

将基本数据类型(8种:int..)封装成对象的好处就是可以在对象中封装更多的功能和方法来操控该数据 常见的操作就是:用于基本数据类型与字符串之间的转换 基本数据类型对象包装类一般用于基本类型和字符串之间的转换 基本类型----->字符串 1.基本类型数值+"" 2.用string类中的valueOf(基本类型数值) 3.用Integer.ValueOf(); 字符串-->基本类型数值 1.使用包装类中的静态方法XXX  parseXXX("XXXX")比

学习笔记三十二:音频流

奋斗之心人皆有之.--李叔同 本讲内容:播放音频 import java.io.*; import javax.sound.sampled.*; public class Text{ public static void main(String[] args) { //播放开战声音 AePlayWave apw=new AePlayWave("e:/tank.wav"); apw.start(); } } //播放声音的类 class AePlayWave extends Thread