Java教程

Java IO流

本文主要是介绍Java IO流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java I/O流

​ 在程序中运行的数据,一旦程序关闭后,数据就会丢失,所以需要用持久化的方式把数据保存起来。

​ 通常会把数据保存在文件中,然后放到硬盘、U盘等磁盘中去。然后就可以通过流把文件中的数据传到程序中来,再把程序中的数据传到文件中去。

在这里插入图片描述

File类

​ 在程序中,我们通过java.io包中的File类来对文件的属性进行访问操作。可以通过创建File类的对象,把文件的路径传进来,就可以通过文件对象的各种方法来操作文件或目录的属性(包括路径、权限、日期和时间等)了。

	File file=new File(String pathname);

创建File文件对象的构造方法中,可以放入文件或目录的路径,如“c:\test.txt”或"c:/test.txt".

File类中操作文件属性的常用方法如下:

返回值类型方法名说明
booleanexists()判断文件或目录是否存在
booleanisFile()判断是否是文件
booleanisDirectory()判断是否是目录
StringgetPath()返回此对象表示的文件的相对路径名
StringgetAbsolutePath()返回此对象表示的文件的绝对路径名
StringgetName()返回此对象表示的文件或目录的名称
booleandelete()删除此对象指定的文件或目录
booleancreateNewFile()创建名称的空文件,不创建文件夹
longlength()返回文件的长度,单位为字节,如果文件不存在,则返回0L
	public static void main(String[] args) {
		
		File file =new File("test.txt");
		System.out.println("文件是否存在"+file.exists());
		System.out.println("是否是文件"+file.isFile());
		System.out.println("是否是目录"+file.isDirectory());
		System.out.println("此文件的相对路径名:"+file.getPath());
		System.out.println("此文件的绝对路径名:"+file.getAbsolutePath());
		System.out.println("此文件的文件名是:"+file.getName());
		System.out.println("此文件的长度为:"+file.length());
	
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		file.delete();
	}

​ 流是一组有序的数据序列,它是以先进先出的方式发送信息的通道,程序通过流来读写文件。

在这里插入图片描述

在这里插入图片描述

Java中的流可以根据流向来分类,分为:

(1)输入流。(以InputStream类和Reader类作为基类)

(2)输出流。(以OutputStream类和Writer类作为基类)

注意:这里的输入输出是相对计算机内存而言。

按处理数据单元划分,流可以分为:

(1)字节流

字节流是8位通用字节流。(1字节=8位)

其中可以细分为:

1.字节输入流。(以InputStream类作为基类)

2.字节输出流。(以OutputStream类作为基类)

(2)字符流

字符流是16位Unicode字符流。(1字符=2字节)

其中可以细分为:

1.字符输入流。(以Reader类作为基类)

2.字符输出流。(以Writer类作为基类)

InputStream类

​ InputStream类是一个抽象类,常用方法如下:

返回值类型方法名说明
intread()把数据源的数据一个字节一个字节读进来,以一个整数返回(返回字节对应的整数)
intread(byte[] b)从输入流读取若干字节,把这些字节保存在数组b中,返回的是读取到的字节数,如果读到末尾,则返回-1
intread(byte[]b,int off,int len)从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组开始保存数据的起始下标,len指读取的字节数目,返回的是实际读取到的字节数,如果读到了末尾,则返回-1
voidclose()关闭流
intavailable()可以从输入流中读取的字节数目

​ 因为抽象类无法实例化对象,所以实际我们使用的是它的一个子类FileInputStream类

FileInputStream类

​ 是InputStream的子类,常用的构造方法有:

(1)FileInputStream(File file); 传输文件

(2)FileInputStream(String name); 传文件路径

用FileInputStream类读文本文件的步骤如下:
在这里插入图片描述

(1)引入相关的类,即导包

​ import java.io.*;

(2)构造文件输入流FileInputStream对象

​ InputStream is =new FileInputStream(”xxx.txt“);

(3)读取文本文件的数据

​ 即调用FileInputStream类的read()方法

​ is.read()

(4)关闭文件流对象

​ is.close()

	public static void main(String[] args) {
		InputStream is =null;
		try {
			is =new FileInputStream("我的青春我做主.txt");
			int read =-1;
//			byte[] b =new byte[1024];
//			while( (read=is.read(b))!=-1 ) {
//				for(int i=0;i<read;i++) {
//					System.out.print((char)b[i]);
//				}
//			}
			while((read=is.read())!=-1) {
				System.out.print((char)read);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

OutputStream类

​ OutputStream类是一个抽象类,常用方法如下:

返回值类型方法名说明
voidwrite(int c)把字节对应的数字通过输出流写到目标文件中
voidwrite(byte[]b)把数组b中的字节数据写到文件中去
voidwrite(byte[]b,int off,int len)把数组b中的字节数据写到文件中去,off表示数组开始写的位置,len表示写多少个字节
voidclose()关闭流
voidflush()强制把缓冲区的数据写到输出流中

​ 因为抽象类无法实例化对象,所以实际我们使用的是它的一个子类FileIOutputStream类

FileOutputStream类

​ 是OutputStream类的子类,常用构造方法如下:

(1)FileOutputStream(File file); 写到某个文件,会覆盖文件原有内容

(2)FileOutputStream(String name); 写到某个路径,会覆盖文件原有内容

(3)FileOutputStream(String name,boolean append); 写到某个路径,布尔值为true时,可以指定不覆盖文件原有内容,而是在后面追加新内容

使用FileOutputStream类写文本文件的步骤:

在这里插入图片描述

(1)引入相关的类,即导包

​ import java.io.*;

(2)构造文件输出流FileOutputStream对象

​ OutputStream os =new FileOutputStream(”xxx.txt“);

(3)把数据写入文本文件

​ 即调用FileOutputStream类的write()方法

​ os.write(byte[]b)

(4)关闭文件流对象

​ os.close()

	public static void main(String[] args) {
		OutputStream os =null;
		try {
			os =new FileOutputStream("szxs.txt",true);
			String msg = "您好呀,信狮教育";
			byte[] b =msg.getBytes();
			os.write(b);
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
这篇关于Java IO流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!