前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中的IO操作

java中的IO操作

作者头像
爱撒谎的男孩
发布2019-12-30 16:35:43
7030
发布2019-12-30 16:35:43
举报

文章目录

  1. 1. java中IO操作
    1. 1.1. 读取文件中的内容
      1. 1.1.0.1. 使用Scanner读取文本中的内容
    2. 1.1.1. 使用FileReader读取
    3. 1.1.2. 使用BufferedReader的类实现高效的读取文件
  2. 1.2. 文件的写入
    1. 1.2.1. 用FileWriter写入文件
    2. 1.2.2. 用PrintStream写入文件
  3. 1.3. 这里是用BufferedWriter类写入文件(一个高效的写入方式)
    1. 1.3.1. 简单介绍
    2. 1.3.2. 例子
    3. 1.3.3. 其他的方法

java中IO操作

读取文件中的内容

使用Scanner读取文本中的内容 相信大家都知道Scanner console=new Scanner(System.in)是用来读取控制台上输入的内容,但是这里是用来读取文件的内容,原理是一样的,只是对象不同罢了,这里用到的是File对象,用来创建一个文件对象

Scanner input=new Scanner(new                         File("hello.txt"));//创建一个对象input
while(input.hasNextLine()) //这里用来判断是否还有内容,    以免读到最后发生错误
{
String content=input.nextLine();
System.out.println(content);
}

这里顺便补充一下Scannner中的几个函数:

  1. nextLine():读取一行的内容,包括空格,换行
  2. nextInt():读取一个整型内容
  3. nexDouble():读取一个双精度的浮点数
  4. next():读取下一个内容,无论什么类型,其中遇到空格和换行默认是一个标记(即是跳过)和nextLine()类似
  5. hasNext():用来判断文件中的还有下一个内容,无论什么类型的
  6. hasNextInt()
  7. hasNextDouble()://相似,不在赘述

使用FileReader读取 用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream上构造一个 InputStreamReader。 FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。

//这里使用new File创建一个对象,同样的也可以直接将文件的绝对路径传入
FileReader file=new FileReader(new File("hello.txt"));
while(file.ready())   //用来判断是否还有字符可读
        {
        int content=file.read();   //这里的read是读取将单个字符 返回的是int,即是ascii码,这里官方文档说返回的是读取的字符数,但是我实验了一下返回的ascii码
        System.out.println((char)content);  //所以要将ascii码转换成字符
        }
        file.close();

常用的几个方法:

  1. read(): return int 上面介绍过
  2. read(char[] cbuf,int int length):将内容读入到一个char类型的数组,length是读取的字符数,offest是偏移量

使用BufferedReader的类实现高效的读取文件

//传入一个reader创建一个对象
        BufferedReader file= new BufferedReader(new FileReader("hello.txt"));  
        System.out.println(file.skip(3));//实现将指针跳过3个字符
        System.out.println((char)file.read()); //read的方法,和FileReader中的read一样
        String line=file.readLine();   //读取一行
        System.out.println(line);

常用的方法:

  1. readLine()
  2. read():如果到了末尾返回-1
  3. read(char [],int off,int length):和FileReader中的一样
  4. ready():判断是否还可以读取,一般和read配对使用
  5. skip(long n):跳过的字符数
  6. close()

文件的写入

FileWriter写入文件

/*创建将对象f传入FileWriter,其中Filewriter有两个参数,第一个是File对象后者是一个String(即是文件的路径),第二个参数是boolean类型的,表示是否在文件的末尾追加内容,默认的是false表示不用在末尾追加,如果想要在末尾追加要写入另外一个参数true,当然这里可以用更加简洁的方式创建:FileWriter file=new FileWriter("hello.txt",false);
*/
FileWriter file=new FileWriter(f,true);
file.write("chenjiabing");//写入函数write
file.close();  //最后必须关闭文件的输入流,否则写入将会失败,这里不想c和c++

其中Filewriter中的方法还有

  1. flush:刷新缓存流
  2. close
  3. append():当前的领会的就是写入数组:append(Arrays.toString(list));
  4. getEncoding():返回此流使用的字符编码

PrintStream写入文件

这里同样的是和System.out.println()一样的原理,System.out.println只是内部实现了PrintStream,这里是用来将指定的内容写入到文件中而已

PrintStream output=new PrintStream(new     File("hello.txt"));
//创建一个写入的对象output
output.print("flan");
output.println("vmlkfamla");
output.println("vmslfkmadvmfs;dm");

这里是用BufferedWriter类写入文件(一个高效的写入方式) 简单介绍 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 (‘\n’) 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWritersOutputStreamWriters)。例如,

PrintWriter out= new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

将缓冲 PrintWriter对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即入到文件,而这是极其低效的。

例子

BufferedWriter input=new BufferedWriter(new FileWriter("hello.txt"));
        input.write("这是一个文件读入的方法");
        input.newLine();
        input.write("一个高效的方法");
        input.close();

其他的方法

  1. close()
  2. flush()
  3. newLine():写入一个换行,因为每一个操作系统上的换行符可能不一样,不能系统的都用”\n”表示
  4. write() 详情参见API

版权信息所有者:chenjiabing 如若转载请标明出处:chenjiabing666.github.io6

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java中IO操作
    • 读取文件中的内容
      • 文件的写入
        • 用PrintStream写入文件
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档