IO流

IO流

Try catch处理异常(JDK9后)

try(流;){

}catch(){

}

则不需要添加finally中执行close()方法关闭流

Properties 集合

唯一和IO流相结合的集合,可以使用store()方法,把集合中的临时数据持久化的写入到硬盘中存储

(操作字符串)

setProperty(String,String)

getProperty(String,String) 不使用put()方法

Set<String> set=pro.stringPropertyNames();  

//使用stringPropertyNames把properties集合中的键取出,存储到一个Set集合中
void store(OutputStream out,String comments)

void store(Writer writer,String comments)

/*

	可以使用Properties集合中方法store把集合中的临时数据,持久化写入到硬盘中存储
		String comments :注释
		//不能用中文,会产生乱码,编码格式默认Unicode。一般使用" "空字符串

*/

字符流

字符流load()装载

//字节流使用的话会出现乱码

public static void main(String[]args){
    //1.创建Properties对象
    Properties prop=new Properties();
    //2.使用Properties集合对象中的方法load读取保存键值对的文件
    prop.load(new FileReader("文件路径"));
    //遍历Properties集合
    Set<String> set=prop.stringPropertyNames();
    for(String key:set){
        String value=prop.getProperty(key);
        System.out.println(key+"="+value);    //在数据中的字符前面加#会将其注释不进行输出
    }
}

缓冲流

是对四个基本的F ileXXXX流的增强,所以也是四个流

BufferedOutputStream 四个步骤:

1.先创建一个OutputStream对象

2.将OutputStream对象放在BufferedOutputStream缓冲流中,提高效率

3.使用writer()方法,把数据写入内存缓冲区

4.用flush()方法,把缓冲区内容写入文件

5.close()释放流.。 //释放的时候会把缓冲区内容写入文件,所以第四步可以省略

//BufferedInputStream 同理

字符缓冲流:

​ void newLine(); //可以根据不同的操作系统,换行

​ split(?);//根据方法里的值进行分割

FileReader读取Windows系统默认的GBK文件会产生乱码

转换流

InputStreamReader

​ 是字节流通向字符流的桥梁,可将其转换为字符流的桥梁,它使用指定的charset读取字节将其转换为字符

OutputStreamReader

GBK-----2个字节存储一个中文 UTF-8 -------3个字节存储一个中文

OutputStreamWriter(OutputStream out )创建使用默认编码的OutputStreamWrite

OutputStreamWriter(OutputStream out ,String charsetName)创建使用字符集的OutputStreamWriter

String charsetName指定的编码表名称,不区分大小写,不知道默认是utf-8;

ObjectOutputStream

序列化与反序列化的概述:

把对象以流的方式写入到文件中的保存叫做序列化,把文件中的文件以流的方式读出来也叫对象的反序列化

反序列化的前提:

1.类必须实现Serializable

2.必须存在类对应的class文件

ObjectInptuStream ois=new ObjectInputStream(new FileInputStream("路径"));

Object o=ois.readObject();

ois.close();

System.out.println(o);

类名 p=(Person) o;

System.out.println();//属性看着输出.

成员变量是不能被序列化的,被序列化的都是对象

transient:若不想成员被序列化,则可以用其修饰(瞬态关键字)

PrintStream:打印流

只能输出不能输入,不会输出IOException,有其特有的方法

System.setOut(new PrintSteam(“路径”));//把输出语句的目的地改为打印流的目的地

PrintWriter:

  • 封装了print() / println()方法,支持写入后换行。

  • 支持数据原样打印。

    public class TestPrintWriter {
    	public static void main(String[] args) throws Exception {
    		//1创建打印流
    		PrintWriter pw=new PrintWriter("d:\\print.txt");
    		//2打印
    		pw.println(97);
    		pw.println(true);
    		pw.println(3.14);
    		pw.println('a');
    		//3关闭
    		pw.close();
    		System.out.println("执行完毕");
    	}
    }
    

    转换流:InputStreamReader/OutputStreamWriter

    • 可将字节流转换为字符流。

    • 可设置字符的编码方式。

      public class TestInputStreamReader {
      	public static void main(String[] args) throws Exception {
      		//1创建InputStreamReader对象
      		FileInputStream fis=new FileInputStream("d:\\write.txt");
      		InputStreamReader isr=new InputStreamReader(fis, "gbk");
      		//2读取文件
      		int data=0;
      		while((data=isr.read())!=-1) {
      			System.out.print((char)data);
      		}
      		//3关闭
      		isr.close();
      	}
      }
      
      public class TestOutputStreamWriter {
      	public static void main(String[] args) throws Exception{
      		//1创建OutputStreamWriter
      		FileOutputStream fos=new FileOutputStream("d:\\info.txt");
      		OutputStreamWriter osw=new OutputStreamWriter(fos, "utf-8");
      		//2写入
      		for(int i=0;i<10;i++) {
      			osw.write("我爱北京,我爱故乡\r\n");
      			osw.flush();
      		}
      		//3关闭
      		osw.close();
      		System.out.println("执行成功");
      	}
      }
      
      

File类

概念:代表物理盘符中的一个文件或者文件夹。

常见方法:

方法名描述
createNewFile()创建一个新文件。
mkdir()创建一个新目录。
delete()删除文件或空目录。
exists()判断File对象所对象所代表的对象是否存在。
getAbsolutePath()获取文件的绝对路径。
getName()取得名字。
getParent()获取文件/目录所在的目录。
isDirectory()是否是目录。
isFile()是否是文件。
length()获得文件的长度。
listFiles()列出目录中的所有内容。
renameTo()修改文件名为。
FileFilter接口

FileFilter:文件过滤器接口

  • boolean accept(File pathname)。
  • 当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值