我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java的File类和IO流实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java的File类和IO流实例分析

本文小编为大家详细介绍“Java的File类和IO流实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的File类和IO流实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    IO流:

    IO流概述:

    IO:输入/输出(Input/Output)

    :是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的, 常见的应用:文件复制;文件上传;文件下载等等,总而言之,涉及到传输的,都涉及到流。

    IO流体系图:

    Java的File类和IO流实例分析

    Java的File类和IO流实例分析

    既然IO是涉及文件的操作,那么一定离不开文件操作的技术:

    File类:

    File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些方法来操作文件,主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。

    File 类表示处理文件和文件系统的相关信息。File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。所以和IO搭配在一起进行读出和写入的操作。

    先看一张File类常用的方法总汇图:

    Java的File类和IO流实例分析

    使用createNewFile()创建一个文件:

    public class test01 {    public static void main(String[] args) throws IOException {//先建立一个File对象,并传入路径        File file1 = new File("G://abc.txt");        //创建空文件,如果没有存在则新建一个,并且返回True,如果存在了就返回false        System.out.println(file1.createNewFile());   }

    如果执行后,该目录没有这个文件,那么会创建一个,并且返回true,如果已经存在了,就会返回false,代表创建失败。

    Java的File类和IO流实例分析

    使用mkdir()创建一个目录:

    File file2 = new File("G://a");System.out.println(file2.mkdir());   //创建一个目录,如果没有存在则新建一个,并且返回True,如果存在了就返回false

    使用mkdirs()创建多级目录:

    File file3 = new File("G://a//b//c");        System.out.println(file3.mkdirs());   //创建多级目录,如果没有存在则新建一个,并且返回True,如果存在了就返回false

    Java的File类和IO流实例分析

    接着我们需要使用IO流里面的功能对文件进行输入和输出:

    先介绍四个常用的流:

    • 字节输入流:InputStream

    • 字节输出流:OutputStream

    • 字符输入流:Reader

    • 字符输出流:Writer

    为什么会有字节和字符两种流呢?

    ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。

    UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。

    Unicode 编码中,一个英文为一个字节,一个中文为两个字节。

    所以我们知道计算机读取数据是一个一个的读取,当文件里面是数字或者英文的时候,因为都占了一个字节,所以可以正常读取出来。

    那么如果是汉字呢?最少也占了两个字节,如果把一个汉字拆分读取,显示出来肯定是有问题的。

    小结:如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流,否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流!

    下面是四种流对应功能的方法名总汇表:

    Java的File类和IO流实例分析

    字节输出流:

    我们使用字节输出流给abc.txt文件里面写一句话:

    public class test01 {    public static void main(String[] args) {        try{              //创建输出流对象:            OutputStream fos = null;            fos = new FileOutputStream("G://abc.txt");            String str = "今天的博客是IO流";            //先将需要写入的字符打散成数组:            byte[] words = str.getBytes();            //使用写入的功能            fos.write(words);        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

    运行后:

    Java的File类和IO流实例分析

    字节输入流(从文件读取到控制台):

    我们知道如果文件内是汉字,使用字节输入流,那么显示的肯定是乱码,如果现在文件里面是“我爱中国”这四个字,使用下面这段代码:

    public class test02 {    public static void main(String[] args) {        //创建字节输入流对象:        InputStream fis = null;        try{            fis = new FileInputStream("G://abc.txt");            int data;            //fis.read()取到每一个字节通过Ascll码表转换成0-255之间的整数,没有值返回-1            while((data=fis.read())!=-1){                //(char) data 将读到的字节转成对应的字符                //中文的字符是2+个字节组成                System.out.print((char) data);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally {            try{                fis.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

    输出的结果是:

    Java的File类和IO流实例分析

    然后把文件内信息换成英文和数字:

    Java的File类和IO流实例分析

    结论:有汉字的文件读取不能用字节流

    字符输出流:

    我们使用字符输出流给abc.txt文件里面写几句话:

    public class test03 {    public static void main(String[] args) {        try{            //使用字符输出流的FileWriter写入数据            Writer fw = new FileWriter("G://abc.txt");            fw.write("我们在学Java");            fw.write("一起加油");            fw.close(); //关闭资源        } catch (IOException e) {            e.printStackTrace();        }    }}

    Java的File类和IO流实例分析

    也没用问题,我们发现,使用字符流写中文汉字更方便。

    字符输入流:

    可以设置缓存流提高获取值的效率:

    public class test04 {    public static void main(String[] args) throws IOException {        //创建字符输入流对象:        Reader fr = null;        try{            fr = new FileReader("G:/abc.txt");            //借助字符流对象创建了字符缓存区 把字符一个一个的取到后先放到缓存区            //然后一起再读写到程序内存来,效率更高            BufferedReader br = new BufferedReader(fr);            //先去缓存区一行一行的读取            String line = br.readLine();            while(line != null){                System.out.println(line);                line = br.readLine();            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally {            try {                fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }

    当文件内的信息为多行的时候:

    Java的File类和IO流实例分析

    字节流和字符流总结:

    • IO是文件的输入和输出,我们要想去对文件或者写,或者通过程序发送消息给另外的用户都要用到流。

    • IO流分 字节流和字符流,字节流是以字节为单位IO,字符流是以字符为单位IO;通常读写图片、视频音频等用字节 流,如果读写文件的内容比如中文建议用字符流。

    读到这里,这篇“Java的File类和IO流实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Java的File类和IO流实例分析

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Java的File类和IO流实例分析

    本文小编为大家详细介绍“Java的File类和IO流实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的File类和IO流实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。IO流:IO流概述:I
    2023-06-29

    Java中File类和IO流的示例分析

    这篇文章主要为大家展示了“Java中File类和IO流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中File类和IO流的示例分析”这篇文章吧。IO流:IO流概述:IO:输入/
    2023-06-29

    JAVA的IO流、File、字节流及字符流实例分析

    今天小编给大家分享一下JAVA的IO流、File、字节流及字符流实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。IO简
    2023-06-30

    【Java|基础篇】File类和IO流

    文章目录 1.File类2.流的概念3.InputStream4.OutputStream5.Reader6.Writer7.使用Scanner读文件8.使用PrintWriter写文件9.close()方法10.flush()方法
    2023-08-16

    Java-IO流的示例分析

    小编给大家分享一下Java-IO流的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言项目结构如下,在使用代码的时候注意修改成你自己的包名和类名一、资源管
    2023-06-20

    Java中IO流的示例分析

    这篇文章主要为大家展示了“Java中IO流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中IO流的示例分析”这篇文章吧。I/O简介I/O是Input/output的缩写,在ja
    2023-06-20

    JAVA中IO操作的字节流和字符流实例分析

    这篇文章主要介绍了JAVA中IO操作的字节流和字符流实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA中IO操作的字节流和字符流实例分析文章都会有所收获,下面我们一起来看看吧。IO操作字节流java
    2023-06-29

    Java IO中包装流的示例分析

    这篇文章主要介绍了Java IO中包装流的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。根据功能分为节点流和包装流(处理流)节点流:可以从或向一个特定的地方(节点)读
    2023-06-26

    C++中IO流操作实例分析

    这篇“C++中IO流操作实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中IO流操作实例分析”文章吧。1.标准输
    2023-07-02

    java中的IO流如何分类

    一、IO:上传下载,写入写出流: 一连串流动的数据,以先入先出的方式进行流动,管道,以程序为中心、程序与网络|文件|服务器|数组..(相关课程推荐:java视频教程)分类1)按照流向:输入流;输出流2)操作单元分:字节流 (万能流):任何内容都可以转为字节,可
    java中的IO流如何分类
    2016-05-18

    python中IO流和对象序列化实例分析

    这篇文章主要介绍了python中IO流和对象序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中IO流和对象序列化实例分析文章都会有所收获,下面我们一起来看看吧。一.IO流的操作(1).什
    2023-06-29

    Java I/O 之File类的示例分析

    这篇文章主要为大家展示了“Java I/O 之File类的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java I/O 之File类的示例分析”这篇文章吧。File类Java使用Fil
    2023-06-20

    【Java IO流】字节流和字符流的实例讲解

    字节流和字符流对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流。1.从对文件的操作来讲,有读和写的操作——也就是输入和输出。2.从流的流向来讲,有输入和输出之分。3.从流的内容来讲,有字节和字符之分。这篇文章先后
    2023-05-31

    Java IO之流的分类是什么

    这篇文章主要为大家展示了“Java IO之流的分类是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java IO之流的分类是什么”这篇文章吧。一、根据流向分为输入流和输出流:注意输入流和输出
    2023-06-26

    Java中IO操作字节流与字符流的示例分析

    这篇文章主要为大家展示了“Java中IO操作字节流与字符流的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中IO操作字节流与字符流的示例分析”这篇文章吧。IO操作字节流java.
    2023-06-29

    深入浅析Java中IO流的 RandomAccessFile类

    这篇文章将为大家详细讲解有关深入浅析Java中IO流的 RandomAccessFile类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。RandomAccessFilejava提供的对文件内
    2023-05-31

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录