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)


相关推荐

  • 常用几种数据库对比

    常用几种数据库对比

  • 最新Java学习教程路线图(2021完整版)

    最新Java学习教程路线图(2021完整版)各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java。因此,也是吸引了不少年轻人投入到Java的学习之中。但不得不说,Java作为老牌编程语言,学习起来还是需要系统才行的。不少小伙伴会通过在网络上找各种各样的学习视频去研究学习,却往往缺乏了系统全面的学习路线。本文所有Java视频资料可点击免费领取所以,今天就跟大家分享一份系统的Java学习教程路线图,零基础也可以无压力的走进Java,学习Java!第一阶段、Java基础J

  • Pycharm汉化后设置无法打开解决办法

    Pycharm汉化后设置无法打开解决办法**Pycharm汉化后设置无法打开解决办法**本人初学python,在安装Pycharm之后,汉化Pycharm时遇到了汉化后设置无法打开的问题。经过百度问题之后,找到了解决方法,并成功解决。在这里给大家整合一下,也留之给未来的自己。如下:首先下载汉化包(我找到的可以汉化成功并且打开设置的汉化包)(1)百度云下载链接链接:https://pan.baidu.com/s/1tpv0…

  • hashlib加密「建议收藏」

    hashlib加密「建议收藏」加密算法介绍HASHHash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。…

  • Git创建远程分支并提交代码到远程分支

    Git创建远程分支并提交代码到远程分支1、可以通过gitbranch-r命令查看远端库的分支情况如图所示,远程仓库只有一个master分支2、从已有的分支创建新的分支(如从master分支),创建一个dev分支但此时并没有在远程仓库上创建分支如图所示还是只有一个master分支3、建立本地到远端仓库的链接–这样代码才能提交上去使用命令行gitpush–set-…

  • split方法_js字符串截取split

    split方法_js字符串截取split描述split()通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔num+1个子字符串语法split()方法语法:str.split(str="",

发表回复

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

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