Java-IO总结

File文件操作类

    创建一个File类:

        public File(String PathName);    //设置路径

        public File(String parent,String child); //设置父路径,子文件

        public boolean createNewFile(); //创建新文件

        public boolean exists();    //判断文件是否存在

        public boolean delete();    //删除文件

    目录操作:

        取得父路径或父对象:

        public String getParent();

        public String getParentFile();

        创建目录:    public boolean mkdir();

        1. 判断路径是否是文件: public boolean isFile()
        2. 判断路径是否是目录: public boolean isDirectory()
        3. 取得文件大小(字节): public long length()
        4. 最后一次修改日期 : public long lastModified()

IO流

    处理文件的内容需要使用流,流分为字节流与字符流

    字节流:InputStream、OutputStream

    字符流:Reader、Writer

不管是使用字节流还是字符流,都通用如下使用规则:

    1. 根据文件路径创建File类对象 ;
    2. 根据字节流或字符流的子类实例化父类对象 ;
    3. 进行数据的读取或写入操作;

    4. 关闭流 close()。

字节流的使用:

    创建:

        InputStream in = new FileInputStram(File file);

        OutputStream out = new FileOutputStram(File file);

    读取: public int read(byte b[]) throws IOException  //InputStream 使用

    写入:public void write(byte b[]) throws IOException  //OutputStream 使用

    

字符流的使用

    创建:

        Reader reader = new FileReader(File file);

        Writer writer = new FileWriter(File file);

    在读写上基本与字节流的使用方式一样,不过需要注意的是:在Writer类里面提供的write()方法,该方法接收的类型都是 char型,要注意的是,Writer类提供了一个直接输出字符串的方法:public void write(String str) throws IOException

        

转换流

    即字节流转化为字符流

    OutputStreamWriter:将字节输出流变为字符输出流(Writer对于文字的输出要比OutputStream方便)

    InputStreamReader:将字节输入流变为字符输入流(InputStream读取的是字节,不方便中文的处理)

    转换流其实是字符流的子类,构造注入字节流来达到转换的效果,他们的继承关系如下:

    

      关于字节流和字符流的使用:在以后进行IO处理的时候,如果处理的是图片、音乐、文字都可以使用字节流,而只有处理中文的时候才会使用字符流。

打印流
    打印流是为了更方便与直接输出信息,若我们使用OutputSteam,需要先将输出的类型转为字节数组才能打印,打印流则是OutputStream的加强版。java提供有专门的打印流处理类:PrintStream(字节打印流)、PrintWriter(字符打印流)

    

    

两种输入流

    1. BufferStream 属于一个缓冲输入流,是一个字符流的操作对象。

    该类有一个读取行的方法:String readLine() throws IOException    //以回车为换行符

    BufferStream的构造方法为:     public BufferedReader(Reader in)    而System.in是InputStream类的子类,这个时候与Reader没有关系,要建立起联系就要用到InputStreamReader类(转换流)使用方式如下:

        BufferStream buf  = new BufferStream( new InputStreamReader(System.in));

    2. Scanner 是一个专门进行输入流处理的程序类

    Scanner的主要方法:

    1. 判断是否有指定类型数据: public boolean hasNextXxx()
    2. 取得指定类型的数据: public 数据类型 nextXxx()
    3. 定义分隔符:public Scanner useDelimiter(Pattern pattern)

    4. 构造方法:public Scanner(InputStream source)

    总结:以后除了二进制文件拷贝的处理之外,那么只要是针对程序的信息输出都是用打印流(PrintStream、PrintWriter),信息输入使用Scanner。

序列化

    对象序列化指的是:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。

    如果要使用系列化,则必须实现java.io.Serializable接口。但是这个接口并没有任何的方法定义,只是一个标识而已。

序列化与反序列化的操作:在java.io包中提供有两个处理类:ObjectOutputStream、ObjectInputStream。

    

    从类的关系可以看出来,ObjectOutputStream、ObjectInputStream分别extends OutputStream、InputStream。序列化使用的处理类还是与字节流有关。

序列化使用测试:

import java.io.*;

class Person implements Serializable{
	private String name;
	private Integer age;
	public Person(String name, Integer age) {
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

public class TestSer {
	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
//		Person person = new Person("张三", 20);
		File file = new File("C:\\Users\\Administrator\\Desktop\\per.txt");
//		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
//		oos.writeObject(person);
//		oos.close();
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
		Object object = ois.readObject();
		System.out.println(object);
		ois.close();
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Victor.Chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值