Java IO流的学习笔记

一、java io 概述

Java IO即Java 输入输出系统。
JavaIO的分类:

在这里插入图片描述

一、File文件操作类

在 java.io 包中,FIle 类是唯一一个 与文件本身操作(创建、删除、取得信息)有关的程序类

构造方法:

  • public File(String pathname)
  • public File(File parent, String child)
  • public File(String parent, String child)
  • public File(URI uri)
package ch18_java_File_io;

import java.io.File;

//java.io.File类
//文件和目录路径名的抽象表示形式。
//java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作
//我们可以使用FiLe类的方法

//创建一个文件/文件夹
//刪除文件文件夹
//获取文件/文件夹
//判断文件文件夹是否存在
//对文件夹进行遍历
//获取文件的大小

//File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法重点:记住这三个单词
//file 文件
//directory:文件夹目录
//path:路径

public class demo01file {

	public static void main(String[] args) {

		//File.pathSeparator路径分隔符  Windows;Linux:
		System.out.println(File.pathSeparator);
		
//		File.separator文件分隔符 Windows反斜杠\ linux斜杠/
		System.out.println(File.separator);
		
//		file类的构造方法
		show01();
		show02("C:","a.txt");  //父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化
	}

	private static void show02(String parent,String child) {
		File f2 = new File(parent,child);
		System.out.println(f2);
	}

	private static void show01() {
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java");
		System.out.println(f1);
	}

}

在这里插入图片描述

二,File类判断功能的方法

在 File 类里提供一系列取得文件信息的操作:

判断路径是否是文件: public boolean isFile() {

判断路径是否是目录: public boolean isDirectory() {

取得文件大小(字节): public long length() {

最后一次修改日期: public long lastModified() {

package ch18_java_File_io;
import java.io.*;

public class demo02File {

	public static void main(String[] args) {

		show01();
		System.out.println("=================");
		show02();
	}


	private static void show01() {
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java\\a.txt");
		
		String path = f1.getAbsolutePath();    //getAbsolutePath()获取绝对路径
		String path1 = f1.getPath();         //路径
		String name1 = f1.getName();          //获取文件名/文件夹名称
		Long l1 = f1.length();           //public Long length 或者文件大小   若文件不存在则返回零
		
		System.out.println(path);
		System.out.println(path1);
		System.out.println(name1);
		System.out.println(l1);
	}
	private static void show02() {
		File file = new File("image/us.gif");
	    
	    System.out.println("Does it exist? " + file.exists());
	    System.out.println("The file has " + file.length() + " bytes");
	    System.out.println("Can it be read? " + file.canRead());
	    System.out.println("Can it be written? " + file.canWrite());
	    System.out.println("Is it a directory? " + file.isDirectory());  //是否为目录,用于判断构造方法中的路径是否以文件夹结尾
	    System.out.println("Is it a file? " + file.isFile());            //是否为文件,用于判断构造方法中的路径是否以文件结尾
	    System.out.println("Is it absolute? " + file.isAbsolute());
	    System.out.println("Is it hidden? " + file.isHidden());
	    System.out.println("Absolute path is " +
	    	      file.getAbsolutePath());
	    	    System.out.println("Last modified on " +
	    	      new java.util.Date(file.lastModified()));
	}

}

在这里插入图片描述

三,File类创建删除功能的方法

package ch18_java_File_io;

import java.io.*;

//public boolean creatNewFile();文件不存在时创建一个新文件
//返回布尔值
//true:文件不存在,创建新文件
//false:文件存在,不会创建
//此方法只能创建文件,不能创建文件夹
//创建文件的路径必须存在

//public boolean mkdir()创建单级空文件夹
//public boolean mkdirs()既可以创建单级空文件夹,也可以创建多级文件夹

public class demo03_Creat_new_File {

	public static void main(String[] args) throws IOException {

		show01();
		show02();
		show03();
	}

	private static void show03() {
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java\\hhhh");
		boolean b1 = f1.delete();
		System.out.println(b1);
	}

	private static void show02() {
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java\\新建文件夹1");
		boolean b1 = f1.mkdir();
		System.out.println(b1);
		
		File f2 = new File("C:\\Users\\Lenovo\\Desktop\\Java\\111\\222\\333");
		boolean b2 = f2.mkdirs();
		System.out.println(b2);
		
	}

//	createNewfile声明抛出了 IOException,我们调用这个方法,就必须的处理这个异常,要么 throws,要么 trycatch
	private static void show01() throws IOException {
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java\\1.txt");
		boolean b1 = f1.createNewFile();
		System.out.println(b1);

	}

}

四,File类遍历(文件夹)目录功能

package ch18_java_File_io;
import java.io.*;

public class demo04_List {

	public static void main(String[] args) {
			show01();
			show02();
	}

	private static void show02() {
//		遍历对象的方式
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java");
		File[] files = f1.listFiles();
		for (File f : files) {
			System.out.println(f);
		}
	}

	private static void show01() {
		
//		目录的路径不存在,会抛出空指针异常         路径不是一个目录,也会抛出空指针异常
		File f1 = new File("C:\\Users\\Lenovo\\Desktop\\Java");
		String[] arr = f1.list();          //遍历文件    会获取目录中所有文件文件夹的名称把获取到的多个名称存储到一个 String类型的数组中
		for(String filename : arr) {
			System.out.println(filename);
		}
	}

}

在这里插入图片描述

五,字节输出流【 Outputstream】

根据数据的流向分为:输入流和输出流
·输入流:把数据从其他设备上读取到内存中的流
·输出流:把数据从内存中写出到其他设备上的流

package ch17_Binary_I_O;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

//java.io.OutputStream:字节输出流
//作用:把内存的数据写入到硬盘的文件中

public class demo01outputStream {

	public static void main(String[] args) throws IOException {

		//1.创建一个 Fileoutputstream对象,构造方法中传递写入数据的目的地
		FileOutputStream fos = new FileOutputStream("C:\\Users\\Lenovo\\Desktop\\Java\\输入输出流\\a.txt");
		FileOutputStream fos2 = new FileOutputStream("C:\\Users\\Lenovo\\Desktop\\Java\\输入输出流\\b.txt");
		byte[] bytes = {65,66,67,68,69};
		
		
		fos.write(45);   //2.调用 Fileoutputstream对象中的方法write,把数据写入到文件中  这里的数字会转化成二进制然后对应的ASCII表
		
//		一次写多个字节:
//		如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
//		如果写的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统黑认码表(GBK)
		fos2.write(bytes);  //ABCDE
		fos2.write(bytes, 1, 2);  //把字节数组的一部分写入到文件中   off:数组的开始索引  Len:写几个字节   ABCDEBC
		
		byte[] bytes2 = "你好".getBytes();  //把字符串转换为字节数组
		System.out.println(bytes2);
		fos2.write(bytes2); //ABCDEBC你好
		
		fos.close();   //3.释放资源(使用会占用一定的内存,使用完毕要把内存清空,提供程序的效率)
	}

}

package ch17_Binary_I_O;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

//追加写/续写:使用两个参数的构造方法

public class demo02_zuijiaxie {

	public static void main(String[] args) throws IOException {
		FileOutputStream fos = new FileOutputStream("C:\\\\Users\\\\Lenovo\\\\Desktop\\\\Java\\\\输入输出流\\\\c.txt",true);//追加写,不换行
		fos.write("你好".getBytes());
		
		for(int i=0;i<10;i++)
		{
			fos.write("换行啊".getBytes());
			fos.write("\n".getBytes());
		}
		
		fos.close();
	}

}

六,字节输入流【InputStream】

package ch17_Binary_I_O;
import java.io.*;
//作用:把硬盘文件中的数据,读取到内存中使用

public class demo03_InputStream {

	public static void main(String[] args) throws IOException{
		FileInputStream fis = new FileInputStream("C:\\\\Users\\\\Lenovo\\\\Desktop\\\\Java\\\\输入输出流\\\\b.txt");
		
//		int len = fis.read();     //read()读取文件中的一个字节并返回,读取到文件的末尾返回-1
//		System.out.println(len);
		
		int len=0; //记录读取到的字节
		while((len = fis.read())!=-1) {
			System.out.println((char)len);
		}
//		
		
		
		
		fis.close();
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值