java之IO流(一)

IO(Input Output)流

What is IO流?

用来处理设备(内存、硬盘)之间的数据;

Java对数据的操作通过流的方式;
java用于操作流的对象都在IO包中;

数据流

  • 流按操作数据分为:1.字节流,2.字符流;
    早期IO包出现的都是字节流,
    其中一些文本数据是比较常见的,为了方便处理它,单独分列出来字符流。
    好处:可以在内部融合编码表。
  • 流按流向分为:1.输入流,2.输出流;

IO流常用基类(抽象):

  • 字符流:
    InputStream,OutputStream
  • 字节流:
    Reader,Writer

由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。前缀名是该流对象的功能。

字符流:

字符流的特点:
IO流用于操作数据,那么数据的最常见体现形式为:文件
以操作文件为主来演示:

  • 现在需要在键盘上创建一个文件并写入一些文字数据。
  1. 明确数据要存放的目的地。
import java.io.*;
		public class FileWriterDemo {
			public static void main(String[] args){
				//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
				FileWriter fw = new FileWriter("demo.txt");
			}
		}

运行一下,会看到异常!
原因:因为很有可能目标路径不存在。
所以要不抛出,要不就用try。
以抛出为例:

import java.io.*;
		public class FileWriterDemo {
			public static void main(String[] args) throws IOException{
				FileWriter fw = new FileWriter("demo.txt");
			}
		}

抛出异常后,该文件会被创建到指定目录下,并且如果该目录下已有同名文件,将会被覆盖。

  1. 调用write方法,将字符串写入到流中。
import java.io.*;
		public class FileWriterDemo {
			public static void main(String[] args) throws IOException{
				FileWriter fw = new FileWriter("demo.txt");
				fw.write("abcde");
			}
		}

运行一下,发现数据并没有写入txt文档,那写到了哪里呢?
它没有直接写到目的地里,而是写到了内存(流)中。
那要怎样才能让它存到目的地中去呢?

  1. 调用flush()方法,刷新流对象中的缓冲的数据,将数据刷到目的地中。
    即:
import java.io.*;
public class FileWriterDemo {
	public static void main(String[] args) throws IOException{
		FileWriter fw = new FileWriter("demo.txt");
		fw.write("abcde");
		fw.flush();
	}
}

此时,重新编译运行,就能看到txt文件中有我们写入的数据。
流一直存在,可以继续将数据写入到文件

  1. 调用close()方法,关闭此流,但是关闭之前会刷新一次内部的缓冲中的数据。
import java.io.*;
public class FileWriterDemo {
	public static void main(String[] args) throws IOException{
		FileWriter fw = new FileWriter("demo.txt");
		fw.write("abcde");
		fw.close();
	}
}

此时运行结果与上面是一致的,但是:
如果我们还想再次输入数据,则会提示:流已关闭。
这就是flush和close的区别。

其实,java是不能往文件内部写数据的,而是依靠系统内部完成数据的书写来完成。

所以java会调用系统中的内容来完成数据的建立。这些方式的调用都是在使用Windows的资源,所以使用完后要释放出来,那么,close()一定要做。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值