Java中的IO操作(文件读取的几种方式)

当如这里最重要的就是导入包:import java.io.;import java.util.;

**文件的读取:**
<->使用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中的几个函数:
nextLine():读取一行的内容,包括空格,换行
nextInt():读取一个整型内容
nexDouble():读取一个双精度的浮点数
next():读取下一个内容,无论什么类型,其中遇到空格和换行默认是一个标记(即是跳过)和nextLine()类似
hasNext():用来判断文件中的还有下一个内容,无论什么类型的
hasNextInt()
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();
/*
常用的几个方法:
read(): return int 上面介绍过
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);
/*
常用的方法:
readLine()
read():如果到了末尾返回-1
read(char [],int off,int length):和FileReader中的一样
ready():判断是否还可以读取,一般和read配对使用
skip(long n):跳过的字符数
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中的方法还有
flush:刷新缓存流
close
append():当前的领会的就是写入数组:append(Arrays.toString(list));
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(如 FileWriters 和 OutputStreamWriters)。例如,
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();
/*
close()
flush()
newLine():写入一个换行,因为每一个操作系统上的换行符可能不一样,不能系统的都用"\n"表示
write()
详情参见API
*/

以上实现了各种的文件写入读取的方式,之后还会陆续更新,还有很多种方法没有学习,之后打算写个爬虫类的文章

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不才陈某

欢迎关注公众号【码猿技术专栏】

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值