十九 输入输出 I/0(一)

十九章 输入输出 I/0(一)

简单的回顾一下存储方式的演变临时存储数据

变量 – 数组–对象–对象的数组–集合(集合为程序内临时存储数据最常用的顶级存储方式)

一、掌握File类的常用API

文件的概念

相关记录或者放在一起的数据集合,它是需要存储在 长期存储 的设备上,有了它就能实现持久化存储。
java.io.File类: 可以实现对文件(File)/文件夹(directory 目录)的操作

构造方法:

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

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

3.File(File parent ,String child) 根据文件类型的父路径和子路径获取对应的文件对象


// 1.File(String pathname)
// File file = new File("d:/a.txt");
// File file = new File("d:\\a.txt");

// 2.File(String parent父路径,String child子路径)
// 通常应用于:你已经获取到了某个文件的父路径  然后只需要通过本构造即可实现路径自动拼接
// File file = new File("d:", "a.txt");

// 3.File(File parent,String child)
// 通常应用于:你已经获取到了某个文件的父路径(File对象型的)....
File parent = new File("d:");
File file = new File(parent , "a.txt");
// 获取文件的字节数
System.out.println(file.length());

获取相对路径: 相对于当前程序所在位置的一个文件路径地址
类似于…/demo1/TestConstructor.java
但是如果你的File对象的地址 本身填写的就是绝对路径 那么就没有相对路径而已

System.out.println(“相对路径:”+file.getPath());

获取绝对路径: 一个固定的地址 可以根据这个地址找到文件

类似于:d:/a.txt http://www.baidu.com

System.out.println(“绝对径:”+file.getAbsolutePath());

普通方法:

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

2.判断文件/目录是否存在: boolean exists();

3.判断是否是文件:boolean isFile();

4.判断是否是为文件夹:boolean isDirectory();

5.获取相对路径: String getPath();

6.获取绝对路径:String getAbsolutePath();

7.获取文件/文件夹的名称: String getName();

8.删除文件/空文件夹(删除内容不会进入回收站):boolean delete();

9.获取文件夹下的所有 子目录 file[] listFiles();

10.创建文件(创建之前判断文件是否存在):boolean createNewFile();

11.创建文件夹:boolean mkdir();

二、掌握流的概念和分类

I/O流的概念

输入/输出流

方向性:相对于程序为参照物,流是有读取和写入操作 是有方向的。

按照处理单元:

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

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

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

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

基类无法创建对象 所以需要创建子类

FileInputStream

FileOutputStream

三、掌握使用字节流实现文件复制

字节输入流FileInputStream

构造:

FileInputStream(File file);

FileInputStream(String pathname);

常用方法

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

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

3.读取输入流中从指定索引开始,指定长度的字节数据到字节数组中:int read(byte b,int offs, int len);

4.关流: void colse();


字节输出流FileOutputStream

构造

FileOutputStream(File file);

FileOutputStream( String path);

FileOutputStream( File/String file ,boolean append);如果为true表示可以追加数据 而不是覆盖

常用方法:

1.void write(int b);输出一个字节

2.void write(byte[] b);输出一个字节数组的内容

3.void write(byte[] b,int offs,int len);输出一个字节数组中的指定范围的内容

4.void close();关流

// 文件的复制
/**
 * 实现文件复制 将d:/a.txt 复制到 c:/a.txt
 */
public class Test {
	public static void main(String[] args) throws IOException {
		FileInputStream fis = null;		
		FileOutputStream fos = null;
		try {
		
			// 1.指定数据源和输出目的地
			fis = new FileInputStream("d:/a.txt");
			fos = new FileOutputStream("c:/a.txt");	
			
			// 2.读取数据
			// 临时存储读取到的数据
			byte[] buffer = new byte[1024];
			int len = 0;
			while((len = fis.read(buffer)) != -1) {
			
				// 3.写入数据  读取到多少写出去多少
				fos.write(buffer,0,len);
			}		
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
		
			// 4.关流
			// 先开的后关
			if(fos != null) {
				fos.close();
			}
			if(fis != null) {
				fis.close();
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值