首页 > 其他分享 >输入输出流

输入输出流

时间:2024-10-19 14:22:34浏览次数:1  
标签:java String int 输入输出 new public out

一、输入输出流介绍

IO流【输入输出流】:
        按照流向划分:
            输入流:外部数据 -> java程序
            输出流:java程序 -> 外部数据

        按照数据类型划分【根据使用记事本打开是否能够看懂来决定】:
            字节流【万能流】:
                字节输出流:
                    OutputStream(抽象类)
                        - FileOutputStream(实现子类)

                字节输入流:
                    InputStream(抽象类)
                        - FileInputStream(实现子类)
            字符流【记事本能看懂】:
                字符输入流:
                字符输出流:

        FileInputStream:
            构造方法:
                FileInputStream(File file)
                FileInputStream(String name)
            成员方法:
                public int read()
                public int read(byte[] b)

二、字节输入流

public class FileInputStreamDemo1 {
    public static void main(String[] args) throws Exception {
//        FileInputStream fis = new FileInputStream(new File("java/src/com/shujia/day16/a1.txt"));
        FileInputStream fis = new FileInputStream("java/src/com/shujia/day16/a1.txt");

        //public int read() 一次只读取一个字节
        // 如果没有读到数据,返回-1
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        System.out.print((char)fis.read());
//        int i = 0;
//        while ((i = fis.read()) != -1) {
//            System.out.print((char) i);
//        }

        //public int read(byte[] b) 一次读取一个字节数组
        //创建一个字节数组,用作接收读取到的字节
        byte[] bytes = new byte[7];
        int length = 0;
        while ((length = fis.read(bytes))!=-1){
            //读取到的字节在字节数组中
            //返回的是实际读取到的字节数
            //将字节数组转字符串
            String s = new String(bytes,0,length);
            System.out.print(s);
        }




        // 释放资源
        fis.close();
    }
}

使用字节输入流读取文件内容

import java.io.FileInputStream;

/*
    使用字节输入流读取汉字
 */
public class FileInputStreamDemo2 {
    public static void main(String[] args) throws Exception{
        FileInputStream fis = new FileInputStream("java/src/com/shujia/day16/a2.txt");

        // 一次读取一个字节
        System.out.println((char) fis.read());

        //一次读取一个字节数组
//        byte[] bytes = new byte[1024];
//        int length = fis.read(bytes);
//        String s = new String(bytes, 0, length);
//        System.out.println(s);


        // 释放资源
        fis.close();
    }
}

三、字节输出流

import java.io.File;
import java.io.FileOutputStream;

/*
    IO流【输入输出流】:
        按照流向划分:
            输入流:外部数据 -> java程序
            输出流:java程序 -> 外部数据

        按照数据类型划分【根据使用记事本打开是否能够看懂来决定】:
            字节流【万能流】:
                字节输出流:
                    OutputStream(抽象类)
                        - FileOutputStream(实现子类)

                字节输入流:
                    InputStream(抽象类)
            字符流【记事本能看懂】:
                字符输入流:
                字符输出流:


      FileOutputStream:
        构造方法:
            FileOutputStream(File file)
            FileOutputStream(String name)

 */
public class FileOutputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        // FileOutputStream(File file) 将目标文件封装成File对象
        // 若目标文件不存在,则会自动创建
//        FileOutputStream fos = new FileOutputStream(new File("java/src/com/shujia/day16/a1.txt"));

        //FileOutputStream(String name)
        FileOutputStream fos = new FileOutputStream("java/src/com/shujia/day16/a1.txt");


    }
}

向文件中写入数据

import java.io.FileOutputStream;

/*
    public void write(int b)
    public void write(byte[] b)
    public void write(byte[] b,int off,int len)


   思考:
        1、如何实现文件内容追加写? 使用另一个重载的构造方法传入append参数值
        2、如何实现写的时候换行?写一个换行符

 */
public class FileOutputStreamDemo2 {
    public static void main(String[] args) throws Exception{
//        FileOutputStream fos = new FileOutputStream("java/src/com/shujia/day16/a1.txt");
        //public FileOutputStream(String name, boolean append)
        FileOutputStream fos = new FileOutputStream("java/src/com/shujia/day16/a1.txt", true);

        //public void write(int b) 写一个ASCII码值
//        fos.write(97);

        // public void write(byte[] b) 写一个字节数组到文件中
//        byte[] bytes = {97,98,99,100,101,102};
//        fos.write(bytes);


        //public void write(byte[] b,int index,int len)
//        fos.write(bytes,2,3);

        fos.write("\r\n".getBytes());
        fos.write("李刚真帅!".getBytes());

        //释放资源
        fos.close();
    }
}

四、字节缓冲输入流

import java.io.BufferedInputStream;
import java.io.FileInputStream;

/*
    InputStream:
        FileInputStream【普通的字节输入流】:
        BufferedInputStream【字节缓冲输入流】:
 */
public class BufferedInputStreamDemo1 {
    public static void main(String[] args) throws Exception {
        //BufferedInputStream(InputStream in)
        //创建一个 BufferedInputStream并保存其参数,输入流 in ,供以后使用。
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("java/src/com/shujia/day16/a1.txt"));

        // 一次读一个字节
//        int i = 0;
//        while ((i=bis.read())!=-1){
//            System.out.print((char) i);
//        }

        // 一次都一个字节数组
        byte[] bytes = new byte[1024];
        int length = 0;
        while ((length = bis.read(bytes)) != -1) {
            String s = new String(bytes, 0, length);
            System.out.print(s);
        }


        //释放资源
        bis.close();
    }
}

五、字节缓冲输出流

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

/*
    OutputStream:
        FileOutputStream【普通的字节输出流】:
        BufferedOutputStream【字节缓冲输出流】:
 */
public class BufferedOutputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        //BufferedOutputStream(OutputStream out)
        //创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
        //创建一个字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("java/src/com/shujia/day16/a2.txt"));

        bos.write("李刚是世界上最帅的男人!".getBytes());
        bos.write("好好学习".getBytes());
        bos.flush();



        //释放资源
        bos.close(); // 关闭缓冲流的时候,会先将内存中的数据刷到磁盘中
    }
}

六、字符输入流

import java.io.FileInputStream;
import java.io.InputStreamReader;

/*
        字符流:
        字符输入流:
            Reader【抽象类】
                - InputStreamReader【具体实现子类】
        字符输出流:
            Writer【抽象类】
                - OutputStreamWriter【具体实现子类】

       InputStreamReader:
            构造方法:
                InputStreamReader(InputStream in) 创建一个使用默认字符集的InputStreamReader。
                InputStreamReader(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。
            成员方法:
                public int read()
                public int read(char[] cbuf)

 */
public class InputStreamReaderDemo1 {
    public static void main(String[] args) throws Exception {
//        InputStreamReader isr = new InputStreamReader(new FileInputStream("java/src/com/shujia/day16/a3.txt"));
        //InputStreamReader(InputStream in, String charsetName)
        InputStreamReader isr = new InputStreamReader(new FileInputStream("java/src/com/shujia/day16/a3.txt"), "GBK");


        // public int read() 一次都一个字符
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        int i = 0;
//        while ((i = isr.read()) != -1) {
//            System.out.print((char) i);
//        }

        //public int read(char[] cbuf) 一次读取一个字符数组
        char[] chars = new char[1024];
        int length = 0;
        while ((length= isr.read(chars))!=-1){
            String s = new String(chars, 0, length);
            System.out.print(s);
        }


        // 释放资源
        isr.close();
    }
}

七、字符输出流

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Arrays;

/*
    字符流【转换流】:字节流 + 编码表

    编码:加密
    解码:解密

    字符流:
        字符输入流:
            Reader
        字符输出流:
            Writer【抽象类】
                - OutputStreamWriter【具体实现子类】

    OutputStreamWriter:
        构造方法:
            OutputStreamWriter(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
            OutputStreamWriter(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。
        成员方法:
            public void write(int c)
            public void write(char[] cbuf)
            public void write(char[] cbuf,int off,int len)
            public void write(String str)
            public void write(String str,int off,int len)

 */
public class OutputStreamWriterDemo1 {
    public static void main(String[] args) throws Exception{
//        String s1 = "今天下午放假,不上课!";
////        byte[] bytes = s1.getBytes();
//        byte[] bytes = s1.getBytes("GBK");
//        System.out.println(Arrays.toString(bytes));
//
//        String s = new String(bytes,"GBK");
//        System.out.println(s);

        // 创建OutputStreamWriter(OutputStream out)对象
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("java/src/com/shujia/day16/a3.txt"),"GBK");

        // public void write(int c) 一次写一个字符
//        osw.write(97);
//        osw.flush();

        //public void write(char[] cbuf) 一次写一个字符数组
//        char[] chars = {'我','爱','数','加'};
//        osw.write(chars);

        //public void write(char[] cbuf,int off,int len) 一次写字符数组的一部分
//        osw.write(chars,1,3);
//        osw.flush();

        //public void write(String str) 直接写一个字符串
//        osw.write("李刚是32期最帅的男人!");
//        osw.flush();

        //public void write(String str,int off,int len) 写字符串的一部分
//        osw.write("李刚是32期最帅的男人!",6,2);

        osw.write("中国");
        osw.flush();


        //释放资源
        osw.close();

    }
}

八、字符缓冲输入流

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;

/*
     字符流:
        字符输入流:
            Reader【抽象类】
                - InputStreamReader【具体实现子类】
                    - FileReader【继承自InputStreamReader】
                - BufferedReader 【字符缓冲输入流】

        字符输出流:
            Writer【抽象类】
                - OutputStreamWriter【具体实现子类】
                    - FileWriter【继承自OutputStreamWriter】
                - BufferedWriter【字符缓冲输出流】


        BufferedReader 【字符缓冲输入流】:
            构造方法:
                BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。
            特殊功能:
                public String readLine() 一次读取文本文件内容的一行, 不会读取换行符


 */
public class BufferedReaderDemo1 {
    public static void main(String[] args) throws Exception {
        //创建字符缓冲输入流对象
//        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("java/src/com/shujia/day16/b3.txt")));
        BufferedReader br = new BufferedReader(new FileReader("java/src/com/shujia/day16/b3.txt"));

        //一次读一个字符
//        int i = 0;
//        while ((i=br.read())!=-1){
//            System.out.print((char) i);
//        }

        //一次读一个字符数组
//        char[] chars = new char[1024];
//        int length = 0;
//        while ((length=br.read(chars))!=-1){
//            String s = new String(chars, 0, length);
//            System.out.print(s);
//        }

        //一次读取一行数据
//        System.out.println(br.readLine());
//        System.out.println(br.readLine());
//        System.out.println(br.readLine());
//        System.out.println(br.readLine());
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

        //释放资源
        br.close();
    }
}

九、字符缓冲输出流

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.OutputStreamWriter;

/*
     字符流:
        字符输入流:
            Reader【抽象类】
                - InputStreamReader【具体实现子类】
                    - FileReader【继承自InputStreamReader】
                - BufferedReader 【字符缓冲输入流】

        字符输出流:
            Writer【抽象类】
                - OutputStreamWriter【具体实现子类】
                    - FileWriter【继承自OutputStreamWriter】
                - BufferedWriter【字符缓冲输出流】

      BufferedWriter【字符缓冲输出流】:
            构造方法:
                BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。
            特殊方法:
                newLine(); // 默认会自动根据当前的系统生成一个换行符

 */
public class BufferedWriterDemo1 {
    public static void main(String[] args) throws Exception{
        //BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。
//        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("java/src/com/shujia/day16/b3.txt")));
        BufferedWriter bw = new BufferedWriter(new FileWriter("java/src/com/shujia/day16/b3.txt"));

        bw.write("落霞与孤鹜齐飞");
//        bw.write("\r\n"); // 这里的换行符需要根据将来运行的系统环境来设置
        bw.newLine(); // 默认会自动根据当前的系统生成一个换行符
        bw.write("秋水共长天一色");

        bw.flush();


        //释放资源
        bw.close();
    }
}

标签:java,String,int,输入输出,new,public,out
From: https://www.cnblogs.com/ndmtzwdx/p/18475831

相关文章

  • JAVA输入输出,运算符
    1.输入输出packagecom.scanner;//1.导包importjava.util.Scanner;publicclassDemo1{publicstaticvoidmain(){print();}//需求:我是一个零基础小白,请帮我写一个程序,可以让用户键盘输入用户名和年龄,然后打印出来。publicstaticvoid......
  • python笔试--输入输出总结(四)
    1、递归函数递归函数是一种在函数内部调用自身的函数。递归是一种强大的编程方法,常用于解决那些可以分解为更小、更简单的问题的问题。递归函数通常遵循以下定义:基本案例(BaseCase):递归函数必须有一个或多个基本情况,这些情况是函数不再调用自身就能直接求解的条件。基本情况是......
  • Educoder——JAVA高级特性 字节流-输入输出
    任务描述本关任务:使用输入输出流读写文件。相关知识为了完成本关任务,你需要掌握:1.如何使用输入流;2.如何使用输出流。输入流我们通过一个示例,来看看输入流应该如何使用,首先我们在D盘下创建一个hello.txt文件。输入文本HelloJavaHelloInputStream。在main方法中加入如......
  • 常用输入输出函数
    常用输入输出函数printf():把输出发送到一个叫作缓冲区(buffer)的中间存储区域。当缓冲区满、遇到换行字符或需要输入的时候迫使printf()的输出被发送到屏幕上。可以使用fflush()函数刷新缓冲区printf()的返回值是待显示字符的个数printf()中如果你不想预先指定字段宽度,希望......
  • Java—逻辑控制与输入输出
    各位看官:如果您觉得这篇文章对您有帮助的话欢迎您分享给更多人哦感谢大家的点赞收藏评论,感谢您的支持!!!一.顺序结构:我每天起床,躺在床上玩手机,然后吃中午饭,睡觉,打游戏,吃饭,打游戏,睡觉(这个就是顺序结构,顺序结构比较简单,按照代码书写的顺序一行一行执行。)二:分支结构:1.if语句......
  • D29【python 接口自动化学习】- python基础之输入输出与文件操作
    day29格式化输出学习日期:20241006学习目标:输入输出与文件操作﹣-41格式化输出:如何将执行结果通过屏幕输出?学习笔记:三种常用的格式化输出方式 百分号方式 format函数方式 总结1.格式化输出是为了让提示信息和输出的结果更人性化2.可以根据输出的复杂度和特点,......
  • D30【python 接口自动化学习】- python基础之输入输出与文件操作
    day30F-strings输出学习日期:20241007学习目标:输入输出与文件操作﹣-42F-strings-如何通过定义好的格式进行输出?学习笔记:F-strings介绍F-strings的计算功能F-strings宽度和精度调整练习#宽度为10个字符,不足补0print(f'{number:010}')#000123.456#指定类......
  • D31【python 接口自动化学习】- python基础之输入输出与文件操作
    day31文件的打开学习日期:20241008学习目标:输入输出与文件操作﹣-43常见常新:文件的打开学习笔记:文件的概念使用open()函数打开文件文件路径处理文件打开模式总结文件操作包括:打开,关闭,读取,写入类Unix系统中设备,虚拟设备,网络套接字等都被当作文件可以学......
  • 1.变量and输入输出
    一、变量概念:变量本质上是一个装东西的盒子,只能存放一个值。1.变量的命名规则变量的名字由:字母,数字,下划线_组成,不能以数字开头,并且区分大小写。a_1=5_b2=102.变量的定义格式:变量名=值=赋值,==等于a=1b=3.14c="hhhh"3.变量的类型int整型,float浮点型,str字符......
  • DataInOut 文件输入输出示例
    publicclassDataInOutTest{publicstaticvoidmain(String[]args){DataOutputStreamdos=null;DataInputStreamdis=null;FileInputStreamfis=null;FileOutputStreamfos=null;try{fis=newFileInp......