栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

读一行,写一行

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读一行,写一行

package com.wuya.net;

import java.io.*;
import java.nio.charset.Charset;

//读一行 写一行;顺便练习了构造方法传参
public class TestIO {
    public static void main(String[] args) throws IOException {
//        method();//读一行
//        method2();//写一行
        method3();//边读边写(综合了上面的代码)且优化了中文乱码的问题
    }

    public static void method3() throws IOException {
        //BufferedReader(Reader in)--构造方法中参数类型Reader是抽象类,
        // TODO FileReader 继承了 InputStreamReader , InputStreamReader又继承了Reader
        //FileReader(String fileName)--TODO 1.txt中是中文时,读取到2.txt会乱码
        BufferedReader in2 = new BufferedReader(new FileReader("D:\practice001\1.txt"));


        //BufferedReader(Reader in)---TODO  InputStreamReader是Reader的直接子类
        // InputStreamReader(InputStream in, Charset cs)--可以设置读取时的字符集 TODO 1.txt中是中文时,读取到2.txt不会乱码
        
        Charset g = Charset.forName("GBK");
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("D:\practice001\1.txt"), g));
        PrintWriter out = new PrintWriter(new FileWriter("D:\practice001\2.txt"));

        String data = "";
        while ((data = in.readLine()) != null) {
            out.println(data);
        }
        out.close();
        in.close();
    }

    public static void method2() throws IOException {
        //TODO 练习一下构造方法传参
        
        //构造方法1:PrintWriter (Writer out)---创建不带自动行刷新的新 PrintWriter
        PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("D:\practice001\bbb.txt", true)));
        out1.println("out1");
        out1.close();//这一步非常关键,否则还在流中,没有刷到磁盘里

        //构造方法2:PrintWriter(Writer out, boolean autoFlush)---创建新 PrintWriter
        PrintWriter out2 = new PrintWriter(new FileWriter("D:\practice001\bbb.txt", true), true);
        out2.println("out2");//TODO 因为第二个参数的存在,不需要out2.flush()或者out2.close()操作,就自动刷到磁盘了

        //TODO out3,out4都会覆盖原来文件bbb.txt中的内容
        //构造方法3:PrintWriter(String fileName)---创建具有指定文件名称且不带自动行刷新的新 PrintWriter
        PrintWriter out3 = new PrintWriter("D:\practice001\bbb.txt");
        out3.println("out3");
        out3.close();

        //构造方法4:PrintWriter(String fileName, String csn)---创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter
        //TODO 第二个参数是设置"字符集"
        PrintWriter out4 = new PrintWriter("D:\practice001\bbb.txt", "GBK");
        out4.println("我是中国人");
        out4.close();

        //TODO 查字典,或者查源码知:还有其他的构造方法,如 PrintWriter(File file, String csn)
        //如 PrintWriter(OutputStream out)
        //todo 延伸:练练 File几种构造方法的传参

    }

    public static void method() throws IOException {
        //1.创建对象---读取指定位置的文件
        BufferedReader in = new BufferedReader(new FileReader("D:\practice001\aaa.txt"));
        //2.调用方法读一行
//        String data1 = in.readLine();
//        String data2 = in.readLine();
//        //todo 没数据了,readLine()读到了啥?----永远是null
//        String data3 = in.readLine();
//        System.out.println(data3);//null

        //定义变量,记录读到的数据
        String data = "";
        while ((data = in.readLine()) != null) {
            System.out.println(data);
        }
    }
}

延伸:NIO/BIO/AIO

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号