java输入输出的方法

java输入输出的方法java输入输出目录一、控制台输入输出二、文件读写一、控制台输入输出 java控制台的输入输出主要依赖于scanner类,使用Scannerscanner=newScanner(System.in)获取了控制台输入的字段,其中system.in就表示这个对象读取的是控制台。publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(sc

大家好,又见面了,我是你们的朋友全栈君。

java输入输出

目录

一、控制台输入输出

二、文件读写


一、控制台输入输出

 java控制台的输入输出主要依赖于scanner类,使用Scanner scanner=new Scanner(System.in)获取了控制台输入的字段,其中system.in就表示这个对象读取的是控制台。

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            String s=scanner.next();
            if(s.equals("exit")){
                break;
            }
            System.out.println(s);
        }
    }

二、文件读写

文件的读写依赖于java.io类,最常用的一般为FileReaderFileWriterBufferReaderBufferWriter,其中File*为最基本的文件读写类,Buffer*则是对File*做了缓冲区以及一些其他方法的优化,效率更高。下面我们来看一下具体的方法。

  1. 注意事项

    • 要注意的是,由于'\'符号在java中有特殊的含义,所以在写文件路径时应该替换为'\\'
    • 文件的路径既可以是相对路径,也可以是绝对路径,推荐使用绝对路径
    • '\r'为光标转移到当前行的行首
    • '\n'为光标转到下一行,但不会调整左右位置
  2. 写入文件

    1. FileWriter
        FileWriter out =new FileWriter("javaproject\\sortsource.txt");//初始化,指定要写入的文件
        Random r=new Random();//获取随机数
        for (int i = 0; i < 10000000; i++) {
            out.write(String.valueOf(r.nextInt())+"\r\n");//写入数据并换行
        }
        out.flush();//将缓冲区的数据写入文件,不写也会在关闭刷新到磁盘。
        out.close();//关闭io
    
    1. BufferWriter
        BufferedWriter out=new BufferedWriter(new FileWriter("javaproject\\sortsource.txt"));//初始化,指定写入文件,这里需要filewriter类型
        Random r=new Random();
        for (int i = 0; i < 10000000; i++) {
            out.write(String.valueOf(r.nextInt()));//写入文件
            out.newLine();//换行
        }
        out.flush();//将缓冲区的数据刷新到文件里
        out.close();//关闭io操作
    
    1. 文件续写
    //覆盖写入
    new FileWriter("javaproject\\sortsource.txt")
    
    //加参数true,则表示续写
    new FileWriter("javaproject\\sortsource.txt",true)
    
  3. 文件读取

     public class FileReaderTest {
         public static void main(String[] args) {
             try {
                 FileReader in = new FileReader("javaproject\\FileWriter.txt");//建立filereader对象,指定要读取的文件
                 BufferedReader br=new BufferedReader(in);//由于filereader没有方法可以用来读取数据,我们用bufferedreader来读取
                 for (int i = 0; i < 10; i++) {
                     System.out.println(br.readLine());//readline每次读取一行数据
                 }
                 br.close();//关闭io
    
             } catch (Exception e) {
    
             }
    
         }
     }
    

    结果:

    20200705194011

  4. File*Buffer*的区别

    • 首先与其他文章讲的file没有缓冲区buffer有缓冲区所以导致file频繁刷新磁盘导致效率不高不同,其实file也是有缓冲区的,我们来做一个实验:
      • 我们在flush之前打上断点,可以看到,还有167条数据没有写入文件,还在缓冲区里
        20200627180230

    20200705180844

    • 解除debug之后1000万条数据都写入了

    20200705181107

    • buffer只是将file的缓冲区优化了,所以效率会更高一些,我们再来看一下例子:
      • 和之前一样,我们也在flush之前打上断点

    20200705181345

    • 可以看到,有874条数据还没有刷新到磁盘文件里,从这里可以看到buffer类的默认缓冲区是要比file大的,这样他可以进行更少次数的io,效率会更高

    20200705181414

    • file换行时必须要使用换行符,但是在不同的系统中,换行符往往是不同的,有的系统换行是'\r\n',而有的则是'\n',跨平台性不好,而buffer则提供了换行的方法newLine()
    • 综上所述,在实际使用中,尽量选择buffer类就好了。
  5. File*Buffer*效率差异

通过之前对于两个类区别的探讨我们知道buffer效率上是比file高的,但是具体高多少呢?我们试一下下面的例子,每个类分别写入一亿条随机数,看一下范别耗时多久:

20200705183104

写入完成:

20200705190528

最终结果:

20200705190458

可以看到buffer类比file类快了一半的时间,所以在平常使用的时候,我们使用buffer类就好了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141317.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 分布式锁的实现和应用场景_predis分布式锁的应用

    分布式锁的实现和应用场景_predis分布式锁的应用文章目录如何理解分布式锁分布式锁的常用实现基于关系型数据库存在单点故障风险不可重入无法实现阻塞应用Redis缓存基于ZooKeeper实现电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。如何理解分布式锁我们都知道,在业务开发中,为了保证在多线程下处理

  • 如何获取uuid_uuid是怎么生成的

    如何获取uuid_uuid是怎么生成的item.id=UUID.randomUUID().toString();

  • springmvc 适配器详解[通俗易懂]

    springmvc 适配器详解[通俗易懂]大家知道springmvc是一个非常优良的框架,配置灵活实现简单,只需我们更多的关注我们的业务逻辑。今天我们就通过一个简单的例子模拟适配生成过程。处理器适配器HandlerAdapter1、SimpleControllerHandlerAdapter表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作

  • 网页文字不可以复制_html5实现复制粘贴

    网页文字不可以复制_html5实现复制粘贴大家在上网的时候是否曾经遇到过网页文字无法复制的情况呢?为什么网页文字无法复制呢?或者问如何把不能复制的网页文字复制下来呢?其实,网页文字不能复制原因大部分是网页的制作者为了防止网页内容被被人盗用而设置了复制限制,在网页中嵌入了Javascript语言,通过编程的手段屏蔽了复制功能。下面小编给大家分享下如何把被限制复制的网页文字复制下来。本方法以IE浏览器为例子,打开IE浏览器链接到需要访问的网页…

    2022年10月13日
  • 以管理员身份运行IJ

    以管理员身份运行IJ

  • python精彩编程200例-python趣味编程100例(99个)

    【实例简介】python如今很流行,AI的首选工具;python趣味编程100例(99个),学习编程不枯燥。【实例截图】【核心代码】python趣味编程100例(99个)└──python趣味编程100例(99个)├──JCP001.py├──JCP002.py├──JCP003.py├──JCP004.py├──JCP005.py├──JCP006.py├──JCP007.py├…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号