首页 > 编程语言 >Java常用IO流

Java常用IO流

时间:2022-11-30 00:46:07浏览次数:64  
标签:输出 常用 Java 字节 字符 缓冲 IO new String

字节输入输出流

FileInputStream 字节输入流

常用方法:
int read(byte[] b,int off ,int len) 返回读取的长度,读取失败返回-1。最多读取len个字节,读来的数据存放在b中,从第b[off]个开始存放。

FileOutputStream 字节输出流

常用方法:
void write(byte[] b,int off ,int len); 写入len个字节到文件中去, 数据来自b,从第b[off]个开始取。 flush(); 刷新此输出流并强制任何缓冲的输出字节被写出。

BufferedInputStream 缓冲字节输入流,为装饰流,需要依赖节点流存在。(默认缓冲大小为8k)

BufferedOutputStream 缓冲字节输出流。

拷贝文件:

/**
     * 拷贝文件,缓冲字节流实现
     * @param srcPath   数据源文件地址
     * @param destPath  目的地文件地址,包含文件名。
     */
    static void copyFile(String srcPath,String destPath){
        //jdk7以后支持自动释放io资源
        try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(srcPath)));
            //不为追加模式
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(destPath),false));){

            byte[] flush = new byte[1024];//缓存字节数组,作为中间储存器
            int leng  = -1;//读到的长度

            //把数据从输入流中读到字节数组中,并且判断是否结束
            while((leng=bis.read(flush))!=-1){
                bos.write(flush,0,leng);//把字节数组里的数据写到文件中去
            }
            bos.flush();//刷新缓冲区域
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

字符输入输出流

FileRead 字符输入流,读取内容为字符的文件。

常用方法:
readLine()   返回读取到的一行数据,读到结尾返回null。

FileWriter 字符输出流,写出字符到文件中。

常用方法:void write(String s)         直接写入一串字符串。
void newLine()         写入换行符。 Writer appnd(String s);    追加写入,返回对象本身,所以可以一直追加appnd(String s).appnd(String s).appnd(String s); flush();          刷新此输出流并强制任何缓冲的输出字节被写出。

BufferedReader 缓冲字符输入流,装饰类,需要依赖字符输入流存在。

BufferedWriter 缓冲字符输出流。


字节流转为字符流

InputStreamReader 字节输入流转为字符输入流。

OutputStreamWriter 字节输出流转为字符输出流。

/**
     * 拷贝内容为字符的文件,缓冲字符流实现。
     * @param srcPath   数据源文件地址
     * @param destPath  目的地文件地址,包含文件名。
     */
    static void copyFile(String srcPath,String destPath){
        //jdk7以后支持自动释放io资源
        try(BufferedReader br = new BufferedReader(
                new InputStreamReader(//字节输入流转为字符输入流
                        new FileInputStream(new File(srcPath))));
            //不为追加模式
            BufferedWriter bw = new BufferedWriter(
                    new OutputStreamWriter(//字节输出流转为字符输出流
                            new FileOutputStream(new File(destPath),false)));) {
            //中间储存变量
            String temp;
            //把数据从输入流中读到字符串,并且判断是否结束
            while (null!=(temp=br.readLine())){
                bw.write(temp);//把字符串写到文件中去
                bw.newLine();
            }
            bw.flush();//刷新缓冲区域
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

对象输入输出流

ObjectOutputStream 对象的序列化流,把对象转成字节数据的输出到文件中保存,对象的输出过程称为序列化,可实现对象的持久存储。

writeObject(Object  o);    写入对象到文件中

ObjectInputStream 对象的反序列化流,读取对象。

Object  readObject();  从文件中读取对象

类要序列号需要实现Serializable接口。


数据输入输出流

DataOutputStream 数据输出流,把field写到文件中去。

writeUTF​(String str)
使用机器无关的方式使用modified UTF-8编码将字符串写入底层输出流。 

DataInputStream 数据输入流,把field从文件中读取出来。

String readUTF​()
读取以modified UTF-8格式编码的Unicode字符串的表示; 这个字符串然后作为String返回。

先写入的先读出来。


关闭IO流

1.先打开的后关闭:

  例如:先开输入流,后开输出流;先关输出流,后关输出流。

2.外层流先关闭:(注意:关闭外层流会自动调用内层流的关闭)

  例如:字节缓存流依赖于字节流,关闭时,先关闭字节缓存流,后关闭字节流。不然报错。

 

 


推荐使用:commons-io组件


 

标签:输出,常用,Java,字节,字符,缓冲,IO,new,String
From: https://www.cnblogs.com/lurenjia-bky/p/16937192.html

相关文章

  • Java中使用commons-io组件
    安装配置在其官网(CommonsIO–DownloadApacheCommonsIO)下载好之后,在项目中导入使用1、复制文件voidcopyFile(finalFilesrcFile,finalFiledestFile)//复......
  • Python: Guess and Check algorithms, Approximate solutions, Bisection method
     判断一个整数是否为完全立方数cubicnumber:  importmathcubical=int(input('number:'))defis_cubical(cubical:int):n=math.ceil(pow(cubic......
  • Windows常用快捷命令
      Windows常用快捷命令1.snippingtool,打开系统截图工具 2.notepad,打开记事本 3.calc,打开计算器 4.regedit,打开注册表 5.OneNote,打开OneNote 6.chrome,打开谷歌浏......
  • Computer Vision_18_Image Stitching
    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面。对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多......
  • Image Processing and Analysis_8_Edge Detection
    此主要讨论图像处理与分析。虽然计算机视觉部分的有些内容比如特征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以及它们的出处,没有把它们纳入到图像......
  • Image Processing and Analysis_8_Edge Detection
    此主要讨论图像处理与分析。虽然计算机视觉部分的有些内容比如特征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以及它们的出处,没有把它们纳入到图像......
  • Image Processing and Analysis_8_Edge Detection:The Design and Use of Steerable Fi
    此主要讨论图像处理与分析。虽然计算机视觉部分的有些内容比如特征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以及它们的出处,没有把它们纳入到图像......
  • 23条JavaScript初学者应知的最佳实践方法
    1、优先使用===,而不是==JavaScript使用两种相等性操作符:===|!==和==|!=。通常认为做比较的最佳实践是使用前一组操作符。“若两个操作数的类型和值相同,那么===比较的结果为......
  • 10种经典排序算法的JavaScript实现方法
    排序算法是《数据结构与算法》中最基本的算法之一。常见的一些排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。其中,冒泡排序......
  • javafx 问题整理
    tableView增加行点击事件,可拿到每列的数据然后做处理这个行点击事件的clickCount总数没有找到办法清零,导致点击数只增不减少,可以采取求模的办法判断点击次数,有知道解决......