美文网首页
Java IO学习笔记(结合了他人的博客)

Java IO学习笔记(结合了他人的博客)

作者: 大雄阿 | 来源:发表于2019-02-17 16:08 被阅读0次

Java中使用IO(输入输出)来读取和写入,读写设备上的数据、硬盘文件、内存键盘。根据数据的走向分为输入流和输出流,这个走向以内存为基准,往内存中读取为输入流,从内存中读出为输出流。

Java IO可以分为两类,字节流操作类(inputstream/outputstream)和字符流操作类(reader/writer)

字节流以8位作为一个数据单元(1byte,8bit)

字符流以16位作为一个数据单元(2byte,16bit)

1.字节流可以处理所有数据类型的数据,在java中以Stream结尾。

2.字符流处理文本数据,在java中以Reader和Writer结尾,由于一个汉字占两个字节,所以产生了字符流

常用流类:

以上四个基类提供的部分通用的读和写方法如下:

int read()-返回的是单个字节数据(字节数据可以直接专程int类型)

int read(byte[] buf)-返回的是读取到的字节数,真正的数据保存在buf中

void write(int c)- c既可以是政府,也可以是字节

void write(byte[] buf  或者 char[] buf)

void  write(String str) - Writer专用



基于字节流的操作

基于字符流的操作

基于字符流的操作

代码转自:https://www.cnblogs.com/dreamyu/p/6551137.html

1.对文件的操作(创建文件,查看文件)

//创建一个文件路径

File file = newFile("D:\\testData.txt");

if(file.exists()){

//得到文件路径

System.out.println(file.getAbsolutePath());

//得到文件大小

System.out.println("文件大小:"+file.length());

}

//创建文件和创建文件夹

File file1 = newFile("d:\\iotest.txt");

if(!file1.exists())

{

    try{

        file1.createNewFile();

    } catch(IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

}else{

    System.out.println("文件已存在");

}

//创建文件夹

File file2 = newFile("d:\\testIO");

if(file2.isDirectory())

{

    System.out.println("文件夹存在");

}else{

    file2.mkdir();

}

//列出一个文件夹下的所有文件

File f = newFile("d:\\testIO");

if(f.isDirectory())

{

    File lists[] = f.listFiles();

    for(inti=0;i<lists.length;i++)

    {

        System.out.println(lists[i].getName());

    }

}

常用字节流FileInputStream和FileOutputStream

FileInputStream:(从文件中读取内容到控制台与Reader对应)

FileInputStream fis = null;

        try{

            fis = newFileInputStream("D:\\testData.txt");

            bytebytes[]=newbyte[1024];

            intn=0;

            while((n=fis.read(bytes))!= -1){

                String str = newString(bytes,0,n);

                System.out.print(str);

            }

        } catch(Exception e) {

            e.printStackTrace();

        } finally{

            try{

                fis.close();

            } catch(IOException e) {

                e.printStackTrace();

            }

        }


FileOutputStream:(向文件写内容相当于Writer)

FileOutputStream fos = null;

        try{

            fos = newFileOutputStream("D:\\testData.txt");

            //倘若是续写文件加一个true参数 fos = newFileOutputStream("D:\\testData.txt",ture);

            String str = "报效国家,舍生忘死";

            bytebytes[] = str.getBytes();

            fos.write(bytes);

        } catch(Exception e) {

            e.printStackTrace();    

        } finally{

            try{

                fos.close();

            } catch(Exception e2) {

                e2.printStackTrace();

            }

        }


字符流FileReader和FileWriter:

//字符流

        //文件写出  输入流

        FileReader freader = null;

        //写入到文件  输出流

        FileWriter fwriter = null;

        try{  

            //创建输入对象

            freader = newFileReader("d:\\testData.txt");

            //创建输出对象

            File f1 = newFile("e:\\testData.txt");

            if(!f1.exists()){

                f1.createNewFile();

            }

            fwriter = newFileWriter(f1);

            //读入到内存

            charchars[] = newchar[1024];

            intn=0;

            while((n=freader.read(chars))!= -1)

            {

                fwriter.write(chars);

                //System.out.println(chars);

            }

        } catch(Exception e) {

            e.printStackTrace();

            // TODO: handle exception

        }finally{

            try{

            freader.close();

            fwriter.close();

            }catch(Exception e){

                e.printStackTrace();

            }

        }


下面介绍一下其他流:

字符串流:StringReader/StringWriter

这两个操作的是专门操作String字符串的流,其中StringReader能从String中方便地读取数据并保存到char数组,而StringWriter则将字符串类型的数据写入到StringBuffer中(因为String不可写)。


转换流:InputStreamReader/OutputStreamReader

这两个类可以将字节流转换成字符流,被称为字节流与字符流之间的桥梁。我们经常在读取键盘输入(System.in)或网络通信的时候,需要使用这两个类


缓冲流:

BufferedReader/BufferedWriter       BufferedInputStream/BufferedOutputStream

没有经过Buffer(缓冲区)处理的IO,每一次读写窦卉由OS底层直接处理,导致效率低下。

经过Buffered处理过的输入流将会从一个buffer内存区域读取数据,本地API只在buffer空了后才会被调用。

经过Buffered处理过的输出流将会把书库写入到buffer中,本地API只会在buffer满了后才会被调用。

BufferedReader/BufferedWriter可以将字符流(Reader)包装成缓冲流,这是最常见用的做法。

BufferedReader提供一个readLine()可以方便地读取一行,而FileInputStream和FileReader只能读取一个字节或者一个字符。

 //缓冲字符流  BufferedReader  BufferedWriter

        BufferedReader bfreader = null;

        try{

            FileReader freader = newFileReader("d:\\testData.txt");

            bfreader = newBufferedReader(freader);//将字符流包装成缓冲流

            //循环读取

            String s ="";

            while((s=bfreader.readLine())!= null)

            {

                System.out.println(s);

            }

        } catch(Exception e) {

            // TODO: handle exception

        }

部分转自:https://www.cnblogs.com/fysola/p/6123947.html

相关文章

  • Java IO学习笔记(结合了他人的博客)

    Java中使用IO(输入输出)来读取和写入,读写设备上的数据、硬盘文件、内存键盘。根据数据的走向分为输入流和输出流...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • 记录一些自己喜欢的博客和资源

    技术博客 张飞的技术博客 我就叫Sunny怎么了 岁寒 FDTemplateLayoutCell学习笔记 理解iO...

  • JAVA IO基本知识

    本部分总结一下JAVA IO的相关知识。 全部章节传送门: JAVA IO学习笔记: IO基本知识 JAVA IO...

  • JAVA IO/NIO

    个人博客http://www.milovetingting.cn JAVA IO/NIO 前言 本文为学习Java...

  • Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下基本的文件操作字...

  • java IO 学习笔记

    输入流:从外部读入一个字节序列的对象 输出流:向外部写入一个字节序列的对象 InputStream和OutputS...

  • Java IO学习笔记

    一、编码 GBK编码:中文占用2个字节,英文占用1个字节 UTF-8编码:中文占3个字节,英文占用1个字节 UTF...

  • Java的IO & NIO

    IO流学习总结一Java IO,硬骨头也能变软二java IO体系的学习总结三Java IO面试题 NIO与AIO...

  • 系统学习 Java IO (十六)----这么多类,应该用哪个?

    目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputSt...

网友评论

      本文标题:Java IO学习笔记(结合了他人的博客)

      本文链接:https://www.haomeiwen.com/subject/kjwieqtx.html