java缓冲流;对象流 ; 文件流;数组流;数据流;转换流;打印流;Properties类的使用

I/O 流

File  对象--内存中  映射关系 通过file对象操作硬盘中的文件或文件夹

    文件夹的遍历  文件夹的删除-->递归;

操作文件中的内容   

文件流(低级流):字节型:FileInputStream  FileOutputStream

         字符型:FileReader  FileWriter

缓冲流(包装流)  将低级流包装起来

  在流管道内增加缓冲的数据

  让我们使用流读取的文字更加的流畅

  高级流-->创建通过低级流

缓存流 :字节型:BufferedInputStream BufferedOutputStream

     字符型:BufferedReader  BufferedWriter

BufferedInputStream 构建方式 使用低级流构建作为参数

  基本使用与低级流的方法完全一致

  read() skip() available() close()

BufferedOutputStream 构建方式 使用低级流构建;没有boolean类型的参数

    基本使用与低级流的方法完全一致 

  write() flush() close()

BufferedReader

  String value=readLine();

BufferedWriter

  write(String);

  newLine();

 打印流  InputStreamReader PrintWriter

字符串流   StringReader  StringWriter

*对象流  对象的序列化/反序列化

1.为什么要有文件?

  文件永久性的保存信息  将很多的数据直接存入文件--数据持久化

2.如果按照以行为单位新信息

  好处在于每一行记录的信息都是相关的

  信息我们可以读取处理 直接看懂文件

  不好在于第一不安全 直接看懂

  不好在于只能记录String信息 不能记录一些动作(方法)

3.读取处理的信息String -->Person

4.如果能将对象拆分成字节码 直接写入文件

   将对象直接存入文件中--对象流

对象的序列化:将一个完整的对象 拆分成字节碎片 记录在文件中

对象的反序列化:将文件中记录的对象随便 反过来组合成一个完整的对象

如果想要将对象序列化到文件中

  需要让对象所属的类实现Serializable接口

  是一个示意性接口

  同时为了让对象可以反序列化,需要让对象中多存在一个属性

    private static long serialVersionUID=任意L;

如果想要将对象反序列化

  需要给对象提供一个序列化的版本号 

BufferedInputStream,BufferedOutputStream
import java.io.*;
public class TestMain{
	public static void main(String[] args){
		try{
		File f=new File("D:\\ddd\\a.txt");
		FileInputStream fi=new FileInputStream(f);
		BufferedInputStream bi=new BufferedInputStream(fi);//缓冲
		bi.available();
		
		FileOutputStream fo=new FileOutputStream(f);
		BufferedOutputStream bo=new BufferedOutputStream(fo);
		bo.available();
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}
BufferedWriter
import java.io.*;
public class TestMain{
	public static void main(String[] args){
		try{
			File f=new File("D:\\ddd\\a.txt");
			FileReader fr=new FileReader(f);//字符输入流
			BufferedReader br=new BufferedReader(fr);
			String values=br.readLine();//读取文件中的一行信息
			while(values!=null){
				System.out.println(values);
				values=br.readLine();
			}
			/*int code=br.read();
			while(code!=-1){
				System.out.print((char)code);
				code=br.read();
			}	
			*/
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

  登录

import java.io.*;
public class TestMain{
	public String login(String filename,String name,String password){
		try{			
			FileReader fr=new FileReader(filename);
			BufferedReader br=new BufferedReader(fr);
			String np=br.readLine();
			while(np!=null){
				if(np.split("-")[0].equals(name)){
					if(np.split("-")[1].equals(password)){						
						return "登录成功";
					}
					break;
				}
				np=br.readLine();
				
			}			
		}catch(IOException e){
			e.printStackTrace();
		}
		return "账号或密码错误";
	}
	public static void main(String[] args){
		TestMain tm=new TestMain();
		String rs=tm.login("D:\\ddd\\a.txt","xiaohua","12345");
		System.out.println(rs);
	}
}

 

BufferedWriter
import java.io.*;
public class TestMain{
	
	public static void main(String[] args){
		try{
			BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\ddd\\a.txt",true));
			bw.newLine();
			bw.write("Java-666");
			bw.flush();
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

 

import java.io.*;
public class TestMain implements Serializable{
	private long serialVersionUID=6807772913284504510L;
	private String name;
	private int age;
	public TestMain(){
	}
	public TestMain(String name,int age){
		this.name=name;
		this.age=age;
	}
	public String getName(){
		return this.name;
	}
	public int getAge(){
		return this.age;
	}
	public static void main(String[] args){
		/*
		TestMain tm=new TestMain("xixi",30);
		try{//将对象记录在文件中;
		FileOutputStream fos=new FileOutputStream("D:\\ddd\\a.txt");
		ObjectOutputStream oos=new ObjectOutputStream(fos);//对象输出流
		oos.writeObject(tm);
		oos.flush();
		
		}catch(IOException e){
			e.printStackTrace();
		}
		*/
		
		try{//对象反序列化 
		FileInputStream fis=new FileInputStream("D:\\ddd\\a.txt");
		ObjectInputStream ois=new ObjectInputStream(fis);//对象输入流
		TestMain p=(TestMain)ois.readObject();			
		System.out.println(p.getName());
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
	}
}

 ---------------------------------------------------------------------------------------

Properties类的使用;java.util;使用方式像是map集合 value=getProperty(key)方法

读取的信息是文件  文件的后缀名.properties  文件里面key=value

package test0607;
import java.util.*;
import java.io.*;
public class TestMain{
	public static void main(String[] args){		
		try{
			Properties p=new Properties();
			p.load(new FileReader("test0607\\a.properties"));
			/*
			Enumeration en=p.propertyNames();
			while(en.hasMoreElements()){
				String key=(String)en.nextElement();
				String value=p.getProperty(key);
				System.out.println(value);
			}
			*/
			String v=p.getProperty("name");
			System.out.println(v);
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
}

  

 

posted on 2020-05-31 14:39  星空6  阅读(289)  评论(0编辑  收藏  举报

导航