一个星期快速自学java编程高级语言干货笔记 - 输入和输出(I/O流)处理(一)

输入和输出(I/O流)处理(一)

学习存储方式的演变:
**临时存储:**变量->数组->对象->对象数组->集合【最常用的程序临时存储定的存储方式】
文件存储:文件存储!(不会因为电脑的关机而损失文件)

1.掌握File类的常用API

文件的概念:相关记录或者放在一起的数据的集合。它是需要长期存储在设备上,有了它我们就可以持久化存储。
**java.io.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");
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.print(file.length());

普通方法

  1. 获取文件的字节数:long xxx = xxx.length();
  2. 判断文件或文件夹是否存在:boolean exists();
File siaf = new File("d:/c.txt");
if(!siaf.exists()) {
			System.out.println("文件不存在");
			// 创建文件,文件名:d盘下的c.txt
			boolean succes = siaf.createNewFile();
			// 判断如果为tuer,则创建成功,如果为false则创建失败
			if(succes) {
				System.out.println("创建文件成功");
			}else {
				System.out.println("创建文件失败");
			}
  1. 判断是否是文件:boolean isFile();
  2. 判断是否是文件夹:boolean isDirectory();
  3. 获取相对路径:String getPath();
  4. 获取绝对路径:String getAbsolutepath();
  5. 创建文件:boolean createNewFile();
  6. 创建文件夹:boolean mkdir();
  7. 删除文件/空文件夹:boolean delete();
  8. 获取 文件名称:String getName();
  9. 获取文件夹的子目录:File[] listFiles();

2.掌握流的概念和分类

I/O流的概念

输入/输出流
:水流 电流 车流

流动性

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

流的分类

按照方向性分类:

  • 输入流:读(inputString)
  • 输出流:写(OutputStream)

按照处理单元:

  • 字节流:可以用来传输一切内容。音频、视频、图片、、、(根据美国Ascll码进行通信传输的)
  • 字符流:可以用来传输文本内容(根据不同国家进行了相应的文字转换,它是基于字节流产生的)

基类是抽象类无法创建对象,所以需要寻找对应的子类
FileInputStream 字节输入流
FileOutputStream 字节输出流

// 向指定文件【追加数据】  p1:文件地址/File对象  p2:是否追加数据
		FileOutputStream fos = new FileOutputStream("d:/b.txt", true);

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

字节输入流FilelnputStream
构造:

FileInputStream(File file);
FileInputStream(String pathname)

常用方法:

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

字节输出流FileOutStream

构造:

FileOutputStream(File file);
FileOutputStream(String path);
FileOutputStream(File/String file,boolean append);
常用方法:

  1. 读取一个字节数据:int read();
  2. 读取一个字节数组长度的字节数据 返回实际读取到的字节数量:int read(byte[] b);
  3. 读取输入流中从指定索引开始,指定长度的字节数据到字节数组中:int read(byte b,int offs,int len);
  4. 关流:void colse();

案例:文件的复制

/**
 * 实现文件复制 将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();
			}
		}

	}

}

猜你喜欢

转载自blog.csdn.net/weixin_44793608/article/details/89574961
今日推荐