ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java-IO(字节流)

2022-04-09 08:31:24  阅读:118  来源: 互联网

标签:Java 字节 int void write fileOutputStream IO public


1. 字节输出流

步骤:

  • 1.创建字节输出流对象
  • 2.调用 write() 方法写入数据
  • 3.释放资源

写入数据的三种方式

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

代码如下:

public class FileOutputStreamDemo2 {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\o.txt");

        //public void write(int b)  写入的是数字,输出的是数字对应的Assic码
//        fileOutputStream.write(99);
//        fileOutputStream.write(96);
//        fileOutputStream.write(35);
//        fileOutputStream.write(56);

        // public void write(byte[] b)  写入数组
        byte[] bytes = {33,56,87,57,22,57,14,89,22};
//        fileOutputStream.write(bytes);

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

        fileOutputStream.close();
    }
}

注意事项:

换行问题

  • 1、没有换行,如何实现换行呢?
    为什么上一个代码中没有进行换行呢?
    因为我们在写数据的时候,只写了字节,没有写入换行符
    如何实现呢?
    理论上,我们每写完一部分的时候,就写一个换行符进行换行
    注意,每一个系统对应的换行不大一样
    Windows:\r\n
    Mac: \r
    Linux: \n

追加问题

  • 2、每次运行写入的时候,会把上一次运行的数据进行覆盖,如何实现追加写入呢?
    追加:在原有的文件内容上继续添加一些新的内容
    覆盖:将原有的文件内容删掉,再添加一些新的内容
FileOutputStream(String name, boolean append) 创建文件输出流以指定的名称写入文件。
public class FileOutputStreamDemo3 {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        //如果不添加后面的 append 参数的话。 默认的是 FALSE ,不追加写入
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\p.txt",true);

        //调用 write 方法写入数据
        for (int i = 0; i < 5; i++) {
            fileOutputStream.write(("大数据,yyds"+i).getBytes());
            fileOutputStream.write("sdfasdf".getBytes());
            //添加换行操作
            fileOutputStream.write("\r\n".getBytes());
        }
        fileOutputStream.close();
    }
}

2. 字节输入流

步骤

字节输入流:ImputStream
子类:FileInputStream

  • 1、创建字节输入流对象
  • 2、调用方法读取数据
  • 3、释放资源

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 IOException {
        //创建字节输入流对象
//        File file = new File("D:\\a.txt");
//        FileInputStream fileInputStream = new FileInputStream(file);
        FileInputStream fileInputStream = new FileInputStream("D:\\a.txt");

        // public int read()读取
//        System.out.println((char)fileInputStream.read());
//        System.out.println((char)fileInputStream.read());
//        System.out.println((char)fileInputStream.read());
//        System.out.println((char)fileInputStream.read());
/*
        //我们发现,当文件的内容过多的时候,一个字节一个字节去读取,发现很麻烦,而且语句都是一样
        //使用循环改进,使用哪一种循环呢?
        //因为我们不知道要循环多少次才能读到文件的末尾,所以采用while循环
        //使用while循环,就得有一个循环条件
        //想一下,这个循环条件是不是就是读到了末尾就不读
        //如何使用代码表示读到文件末尾呢?如果达到文件的末尾, -1 。
        //一次读取一个字节
 */
        int len = 0;
        while ((len = fileInputStream.read()) != -1){
            System.out.println((char)len);
        }
        fileInputStream.close();
    }
}

字节输入流读取数据的第二种方法,一次读取一个数组

public class FileInputStreamDemo2 {
    public static void main(String[] args) throws IOException {
        //创建字节输入对象
        FileInputStream fileInputStream = new FileInputStream("D:\\b.txt");
        //创建字节数组,依据大小来读取
        byte[] bytes = new byte[4];
        int len = 0;
        while ((len = fileInputStream.read(bytes)) != -1){
            System.out.println(new String(bytes, 0, len));
        }
    }
}

标签:Java,字节,int,void,write,fileOutputStream,IO,public
来源: https://www.cnblogs.com/atao-BigData/p/16120788.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有