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类就好了

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

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

(0)
上一篇 2022年5月26日 上午8:40
下一篇 2022年5月26日 上午8:40


相关推荐

  • domcontentloaded ajax,Ajax优化(1) — DOMContentLoaded

    domcontentloaded ajax,Ajax优化(1) — DOMContentLoaded很久没有来百度空间看看了 一直忙武林三国游戏 这款 webgame 目前已经进入收尾阶段 今天来到这儿 突然觉得留下点什么比较好 呵呵 想了想 就取了 Ajax 优化 这个题目 将一系列同行们可能没有用到 or 没有注意 or 发现但没有去处理的细节记录下来 DOMContentLo 是 firefox 下特有的 Event 当所有 DOM 解析完以后会触发这个事件 与 DOM 中的 onLo

    2026年3月16日
    2
  • telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决

    telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决转载请注明出处 http blog csdn net dongdong9223 article details 本文出自 我是干勾鱼的博客 有时候 telnet 一个 mysql 服务器的时候会出现 Host 192 168 0 1 isnotallowed

    2026年3月26日
    3
  • Struts中private static final long serialVersionUID的作用

    Struts中private static final long serialVersionUID的作用今天在看项目源码的时候发现 struts 的 action 里面有 privatestati L 这样的一条语句 中文搜索之后 全部都是如果你修改了此类 要修改此值 否则以前用老版本的类序列化的类恢复时会出错 为了在反序列化时 确保类版本的兼容性 最好在每

    2026年3月17日
    1
  • 51goc 637.可表示的数 题解

    51goc 637.可表示的数 题解51goc637.可表示的数题解题目描述有N个整数从左到右排成一行,如果某个数等于它前面的2个数的和,就称这个数是可以表示的数。问给定的数列里有多少个数是可以表示的数。输入格式第一行1个整

    2022年8月4日
    12
  • R语言实现文本挖掘和tagxedo词云可视化技术

    R语言实现文本挖掘和tagxedo词云可视化技术本文将通过 KNIME R 语言和 tagxedo 三个工具来实现文本挖掘和词云可视化技术 体验一下舆情分析的魅力 一 数据导入数据源 2014 年 10 月 2015 年 7 月的飞信群全部聊天记录 图一原数据示例通过 KNIME 进行原始聊天记录文件的结构化转换 提取文件中发言人 发言时间和发言内容三个字段 并保存为 csv 文件

    2026年3月17日
    2
  • python的特点和优势_Java与Python异同

    python的特点和优势_Java与Python异同Python介绍Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面…

    2026年1月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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