• 学习java的第二十七天。。。(输入输出流)


    今天学习了输入输出流中的几个类,1、InputStream类(抽象类)2、FileInputStream类(InputStream类的子类)3、OutputStream类(抽象类)4、FileOutputStream类(OutputStream类的子类)5、Reader类(抽象类)6、InputStreamReader类(Reader类的子类)7、FileReader类(InputStreamReader类的子类)8、BufferedReader类(Reader类的子类)9、Writer类(抽象类)10、OutputStreamWriter类(Writer类的子类)11、FileWriter类(OutputStreamWriter类的子类)12、BufferedWriter类(Writer类的子类)

    通过流来读写文件

        流是一组有序的数据序列
        以先进先出方式发送信息的通道

    Java流的分类

    InputStream类常用方法

        int read( )
        int read(byte[] b)
        int read(byte[] b,int off,int len)
        void close( )
        int available():可以从输入流中读取的字节数目

    FileInputStream常用的构造方法

        FileInputStream(File file)
        FileInputStream(String name)

    使用FileInputStream 读文本文件

        引入相关の类
            import java.io.IOException;
            import java.io.FileInputStream;
        构造文件输入流
            FileInputStream fis= new FileInputStream("c:\\test.txt");
        读取文本文件的数据
            fis.available(); 
            fis.read(); 
        关闭文件流对象
            fis.close(); 

    1. public static void main(String[] args) throws IOException {
    2. //创建对象
    3. FileInputStream fis = new FileInputStream("f:/a.txt");
    4. //读取数据,将读取到的数据存储在声明的数组中
    5. byte[] bytes = new byte[1024];
    6. int num=fis.read(bytes);
    7. System.out.println(num);
    8. //遍历数组获取读取到的数据
    9. for (int i = 0; i < num; i++) {
    10. System.out.print((char)bytes[i]);
    11. }
    12. //数据读取完毕之后,关闭流
    13. fis.close();
    14. }

    OutputStream类常用方法

        void write(int c)
        void write(byte[] buf)
        void write(byte[] b,int off,int len)
        void close()
        void flush():强制把缓冲区的数据写到输出流中

    FileOutputStream常用的构造方法

        FileOutputStream (File file)
        FileOutputStream(String name)    
        FileOutputStream(String name,boolean append)
        1.前两种构造方法在向文件写数据时将覆盖文件中原有的内容
        2.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件

    使用FileOutputStream 写文本文件

        引入相关の类
            import java.io.IOException;
            import java.io.FileOutputStream;
        构造文件输出流
            FileOutputStream fos = new FileOutputStream("text.txt");
        读取文本文件的数据
            String str ="好好学习Java";
            byte[] words  = str.getBytes();
            fos.write(words, 0, words.length);
        关闭文件流对象
            fos.close(); 

     

    1. //创建FileOutputStream类对象
    2. FileOutputStream fos = null;
    3. try {
    4. fos = new FileOutputStream("F:/a.txt", true);
    5. // 准备数据
    6. String strs = "asdfgfhjk";
    7. // 将字符串strs转换成字节数组
    8. byte[] bytes = strs.getBytes();
    9. //开始写数据
    10. fos.write(bytes);
    11. System.out.println("文件写入完毕");
    12. } catch (FileNotFoundException e) {
    13. e.printStackTrace();
    14. } catch (IOException e) {
    15. e.printStackTrace();
    16. } finally {
    17. try {
    18. fos.close();
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. }
    22. }

    Reader类常用方法

        int read( )
        int read(char[] c)
        read(char[] c,int off,int len)
        void close( )

     子类InputStreamReader常用的构造方法

        InputStreamReader(InputStream in)
        InputStreamReader(InputStream in,String charsetName)

    1. System.out.println(System.getProperty("file.encoding"));
    2. //创建File类对象
    3. File file = new File("F:/a.txt");
    4. //创建InputStream类的引用(InputStream是一个抽象类,无法实例化,可以创建其子类对象)
    5. InputStream is=null;
    6. //创建InputStreamReader类对象
    7. InputStreamReader isr=null;
    8. try {
    9. is = new FileInputStream(file);
    10. isr = new InputStreamReader(is, "utf-8");
    11. char[] chs = new char[1024];
    12. int num=isr.read(chs);
    13. for (int i = 0; i < num; i++) {
    14. System.out.print(chs[i]);
    15. }
    16. } catch (FileNotFoundException e) {
    17. e.printStackTrace();
    18. } catch (IOException e) {
    19. // TODO Auto-generated catch block
    20. e.printStackTrace();
    21. }finally{
    22. try {
    23. isr.close();
    24. is.close();
    25. } catch (IOException e) {
    26. // TODO Auto-generated catch block
    27. e.printStackTrace();
    28. }
    29. }

    FileReader类是InputStreamReader的子类

    FileReader(File file)
    FileReader(String name)
    该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型
    System.out.println(System.getProperty("file.encoding"));  获得本地平台的字符编码类型

     使用FileReader读取文件

        引入相关的类
            import java.io.Reader;
            import java.io.FileReader;
            import java.io.IOExceprion;
        创建FileReader对象
            Reader fr= new FileReader("D:\\myDoc\\简介.txt");
        读取文本文件的数据
            fr.read();
        关闭相关的流对象
            fr.close();

     

    1. //创建对象,File类对象只能按照本地平台的编码格式读取文件,如果文件编码和本地平台不一样,会出现乱码的现象
    2. FileReader fr =null;
    3. try {
    4. fr = new FileReader("F:/a.txt");
    5. char[] chs = new char[1024];
    6. //读取数据
    7. int num=fr.read(chs);
    8. for (int i = 0; i < num; i++) {
    9. System.out.println(chs[i]);
    10. }
    11. } catch (FileNotFoundException e) {
    12. e.printStackTrace();
    13. } catch (IOException e) {
    14. e.printStackTrace();
    15. }finally{
    16. try {
    17. fr.close();
    18. } catch (IOException e) {
    19. e.printStackTrace();
    20. }
    21. }

    BufferedReader类

    BufferedReader类是Reader类的子类
    BufferedReader类带有缓冲区
    按行读取内容的readLine()方法
    BufferedReader常用的构造方法
        BufferedReader(Reader in)
    子类BufferedReader特有的方法
         readLine()

    Writer类常用方法

        write(String str)
        write(String str,int off,int len)
        void close()
        void flush()

     子类OutputStreamWriter常用的构造方法

        OutputStreamWriter(OutputStream out)
        OutputStreamWriter(OutputStream out,String charsetName)

    FileWriter类是OutputStreamWriter的子类

    FileWriter (File file)
    FileWriter (String name)
    该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型

    使用FileWriter写文件

    引入相关的类
        import java.io.Reader;
        import java.io.FileWriter;
        import java.io.IOException;
    创建FileReader对象
        Writer fw= new FileWriter("D:\\myDoc\\简介.txt");
    写文本文件
        fw.write();
    关闭相关的流对象
        fw.close();

    1. Writer writer=null;
    2. BufferedWriter bw=null;
    3. try {
    4. writer = new FileWriter("f:/demo.txt",true);
    5. bw = new BufferedWriter(writer);
    6. //先向文件中插入一个换行
    7. bw.newLine();
    8. bw.write("sahdk");
    9. bw.newLine();
    10. bw.write("dsjlfsda");
    11. System.out.println("数据写入完毕");
    12. } catch (IOException e) {
    13. // TODO Auto-generated catch block
    14. e.printStackTrace();
    15. }finally{
    16. try {
    17. bw.close();
    18. writer.close();
    19. } catch (IOException e) {
    20. // TODO Auto-generated catch block
    21. e.printStackTrace();
    22. }
    23. }

    BufferedWriter类 

    BufferedWriter类是Writer类的子类
    BufferedWriter类带有缓冲区
    BufferedWriter常用的构造方法
         BufferedWriter(Writer out)

    使用BufferedWriter写文件

        引入相关的类
            import java.io.FileWriter ;
            import java.io.BufferedWriter ;
            import java.io.IOException;
        创建BufferedWriter对象和fileWriter对象
            FileWriter fw=new FileWriter("C:\\myTest.txt"); 
            BufferedWriter bw=new BufferedWriter(fw);
        调用write()方法写数据
            bw.write("hello");
        流对象的清空和关闭flush()和close()
            bw.flush();  
            fw.close();

  • 相关阅读:
    安装anaconda
    go 程序被意外kill后出现僵尸进程解决方案
    学习笔记-Flutter 布局控件完结篇
    Python Pandas数据处理作图——波尔共振实验
    淘宝/天猫获得淘宝商品详情(关键词搜索,店铺所有商品)API接口返回值说明
    elasticsearch6-RestClient操作文档
    cdh集群搭建(6.3)
    前端开发中如何高效渲染大数据量
    项目进展(九)-完善ADS1285代码
    yolov7配置与训练记录(一)
  • 原文地址:https://blog.csdn.net/qihaojinqiuma/article/details/126387790