zoukankan      html  css  js  c++  java
  • JAVA核心技术I---JAVA基础知识(文本文件读写)

    一:java IO包概述

    (一)Java读写文件,只能以(数据)流的形式进行读写

    (二)java IO 包

    –节点类:直接对文件进行读写
    –包装类
    • 转化类:字节/字符/数据类型的转化类
    • 装饰类:装饰节点类

    (三)节点类

    –InputStream, OutputStream(字节)
      • FileInputStream,FileOutputStream
    –Reader,Writer(字符)
      • FileReader, FileWriter

    (四)转换类:字符到字节之间的转化

    –InputStreamReader:文件读取时字节,转化为Java能理解的字符
    –OutputStreamWriter:Java将字符转化为字节输入到文件中

    (五)装饰类:装饰节点类

    –DataInputStream,DataOutputStream: 封装数据流
    –BufferedInputStream,BufferOutputStream:缓存字节流
    –BufferedReade, BufferedWriter:缓存字符流

    二:文本文件读写

    –输出文本字符到文件中
    –从文件中读取文本字符串

    (一)写文件

    –先创建文件,写入数据,关闭文件
    –FileOutputStream, OutputStreamWriter, BufferedWriter
    –BufferWriter
      • write
      • newLine
    –try-resource 语句,自动关闭资源
    –关闭最外层的数据流,将会把其上所有的数据流关闭
        public static void writeFile1() {
            FileOutputStream fos = null;
            OutputStreamWriter osw = null;
            BufferedWriter bw = null;
            try {
                fos = new FileOutputStream("c:/temp/abc.txt"); // 节点类
                osw = new OutputStreamWriter(fos, "UTF-8"); // 转化类
                //osw = new OutputStreamWriter(fos); // 转化类
                bw = new BufferedWriter(osw); // 装饰类
                // br = new BufferedWriter(new OutputStreamWriter(new
                // FileOutputStream("c:/temp/abc.txt")))
                bw.write("我们是");
                bw.newLine();
                bw.write("Ecnuers.^^");
                bw.newLine();
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                try {
                    bw.close(); // 关闭最后一个类,会将所有的底层流都关闭
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
        public static void writeFile2() {
            //try-resource 语句,自动关闭资源
            try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/temp/abc.txt")))) {
                bw.write("我们是");
                bw.newLine();
                bw.write("Ecnuers.^^");
                bw.newLine();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

    (二)读文件

    –先打开文件,逐行读入数据,关闭文件
    –FileInputStream, InputStreamWriter, BufferedReade
    –BufferReader
      • readLine
    –try-resource 语句,自动关闭资源
    –关闭最外层的数据流,将会把其上所有的数据流关闭
        public static void readFile1() {
            FileInputStream fis = null;
            InputStreamReader isr = null;
            BufferedReader br = null;
            try {
                fis = new FileInputStream("c:/temp/abc.txt"); // 节点类
                isr = new InputStreamReader(fis, "UTF-8"); // 转化类
                //isr = new InputStreamReader(fis);
                br = new BufferedReader(isr); // 装饰类
                // br = new BufferedReader(new InputStreamReader(new
                // FileInputStream("c:/temp/abc.txt")))
                String line;
                while ((line = br.readLine()) != null) // 每次读取一行
                {
                    System.out.println(line);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                try {
                    br.close(); // 关闭最后一个类,会将所有的底层流都关闭
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
        public static void readFile2() {
            String line;
            //try-resource 语句,自动关闭资源
            try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("c:/temp/abc.txt")))) {
                while ((line = in.readLine()) != null) {
                    System.out.println(line);
                }
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
        }

    (三)混用写入和读取

    public class FileW {
        public static void main(String[] args) {
            //写文件
            FileOutputStream fos = null;        //节点类
            OutputStreamWriter osw = null;        //转换类
            BufferedWriter bw=null;                //装饰类
            
            try {
                fos = new FileOutputStream("D:\MyJava\Code\JH16\test\aa\bb\E.txt");
                osw = new OutputStreamWriter(fos);
                bw = new BufferedWriter(osw);
                
                //开始写入
                bw.write("我们是:");
                bw.newLine();
                bw.write("fwawa!");
                bw.newLine();
            }catch(Exception e) {
                System.err.println(e.getMessage());
            }finally{
                try {
                    bw.close();
                }catch(Exception e) {
                    System.err.println(e.getMessage());
                }
            }
            
            //读取文件
            String line;
            try(BufferedReader in = 
                    new BufferedReader(
                            new InputStreamReader(
                                    new FileInputStream("D:\MyJava\Code\JH16\test\aa\bb\E.txt")))){
                while((line=in.readLine())!=null) {
                    System.out.println(line);
                }
            }catch(Exception e) {
                System.err.println(e.getMessage());
            }
        }
    }
    我们是:
    fwawa!
  • 相关阅读:
    windows mysql 的myini
    NuGet 程序源包
    链表更新
    程序包需要 NuGet 客户端版本“XXXXX”或更高版本,但当前的 NuGet 版本为“XXXXXXXXXX”
    chrome下调试安卓app 之 ionic
    ionic3 在ios9.0 系统下 会出现ReferenceError:Can't find variable:Intl 错误提示
    抓取html 生成图片
    grunt 打包 分解(并非原创)
    关于 vue 日期格式的过滤
    Android Studio
  • 原文地址:https://www.cnblogs.com/ssyfj/p/10243466.html
Copyright © 2011-2022 走看看