IO流

1.File类常用的API

**文件的概念:**相关记录或者放在一起的数据集合。它是需要存储在”长期存储“的设备上,有了它我们就可以实现持久化存储

**java.io.File类:**可以实现对文件(File)/文件夹(目录directory)的操作。

构造方法:

1、File(String pathname)直接根据字符串类型的地址获取对应的文件对象

2、FIle(String parenr,String child)根据字符串类型的父路径和子路径获取对应的文件对象

3、FIle(File parent,String child)根据文件类型的父路径和字符串的子路径获取对应的文件对象
普通方法:

1、获取文件的字节数:long length()

2、boolean exists() 判断文件/文件夹是否存在

3、boolean isFile() 判断是否是文件

4、boolean isDirectory() 判断是否是文件夹/目录

5、String getPath() 获取此对象的相对路径 可以理解为File构造传入什么路径 就得到什么路径

6、String getAbsolutePath() 获取绝对路径 如果File构造传入的是相对路径 则可以根据它扎到对应的绝对路径,但是如果本身就是绝对路径 则直接显示

7、String getName() 获取文件或文件夹的名称

8、boolean delete() 删除文件/空文件夹 不会进入回收站【没有经过window程序操作】

9、 File [] listFiles() 获取所有的文件夹的 子目录

10、boolean createNewFIle() 创建文件

11、boolean mkdir() 创建文件夹

12、boolean mkdirs() 创建多级文件夹
public class FileDemo {
public static void main(String[] args) {
// File(String pathname) 根据一个路径得到File对象
// 把e:\a\a.txt封装成一个File对象
File file = new File(“e:\a\a.txt”);// 指向目录不一定存在

	// File(String parent, String child) 根据一个目录和一个子文件/目录得到File对象
	File file2 = new File("e:\\a","a.txt");
	
	// File(File parent, String child) 根据一个父类File对象和一个子文件/目录得到File对象
	File file3 = new File("E:\\a");
	File file4 = new File(file3,"a.txt");
	
	// 以上三种方式效果其实是一样的。
}

}

2、流的概念和分类

我们想实现IO的操作,就必须知道硬盘上文件的表现形式而java就提供了一个类File供我们使用
流的分类:

按照方向性分类:

输入流:读 InputStream(基类)Reader

输出流: 写 OutputStream (基类)Writer

按照处理单元:

**字节流:**可以用来传输一切内容。音频、视频、图片、文本… 根据美国ASCII码进行通信传输的

字节输出流 OutputStream 字节输入流 InputStream

**字符流:**可以用来传输文本内容 根据不同国家进行额相应文字转换(它是基于字节流产生的)

字符输出流Writer 字符输入流 Reader

基类是抽象类无法创建对象,所以需要寻找找他的子类

FileInputStream

FileOutput Stream

3.使用字节流实现文件复制

**字节输入流 ** FileInputStream

构造:

FileInputStream(File file);

FileInputStream(String pathname);

常用方法:

1.读取一个字节数据int read();

2.读取一个字节数组长度的字节数据 返回实际读取到的字节数量 : int read(byte[] b);

3.读取

**字节输出流:**FileOutput Stream
*/
public class CopyFileDemo {

public static void main(String[] args) throws IOException {
	// 封装数据源
	//FileInputStream fis = new FileInputStream("e:/c.txt");
	FileInputStream fis = new FileInputStream("e:/a.txt");
	
	
	// 封装目的地
	FileOutputStream fos = new FileOutputStream("e:/b.txt");
	int by = 0;
	while((by = fis.read()) != -1){
		fos.write(by);
	}
	
	// 释放资源
	fos.close();
	fis.close();
}

}

4.基本的字符流的使用

字符流的基类:

Reader

Writer

常用实现类:

FileReader

构造:

FileReader(File file);

FileReader(String pathname);

常用方法:

int read(char[] buffer);读取数据到字符数组中返回 读取的字符数

int read(char[] buffer,int offset,int len);读取指定长度的字符数据到数组中 返回读取的字符数

FileWriter

构造:

FileWriter(File file);

FileWriter(String pathname);

FileWriter(String/File pathname, boolean append);追加数据

常用方法:

void write(String str);输出一个字符串

void write(String str ,int offset,int len);输出一个字符串的一部分

void write(char[] buffer);输出一个字符数组

void write(char[] buffer,int offset,int len);输出一个字符数组的一部分

**关流方法:**void close():在try-catch中可以通过try()形式自动关流。
public class Demo1 {

public static void main(String[] args) {

	try (
		// 构造 BufferedReader(Reader in)
		BufferedReader br = new BufferedReader(new FileReader("d:/pet.template"));
		){
		
		// 常用方法 String readLine() 读取一行字符串
		// String str = br.readLine();
		// System.out.println(str);
		String len = null;
		while((len = br.readLine()) != null) {
			System.out.println(len);
		}
		
	} catch (Exception e) {
		e.printStackTrace();
	}
	
}

}

public class Demo2 {

public static void main(String[] args) {

	try (
		// 构造 BufferedWriter(Writer wr)
		BufferedWriter br = new BufferedWriter(new FileWriter("e:/pet.txt"));
		){
		br.write("呵呵");
	} catch (Exception e) {
		e.printStackTrace();
	}
	
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值