zoukankan      html  css  js  c++  java
  • 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();
    	}
    }


  • 相关阅读:
    神鬼传奇客户端解包图片(ui\common)
    电子书下载:Pro ASP.NET MVC 3 Framework 3rd Edition
    DDS工具
    Delphi2010中TResourceStream流使用
    电子书下载:Professional C# 4 and .NET 4
    电子书下载:Professional NoSQL
    电子书下载:C# Database Basics
    FancyCache要怎样设置才最大发挥硬盘的性能?
    完美时空Cube Engine 3D引擎
    DELPHI获取CPU信息
  • 原文地址:https://www.cnblogs.com/yongtaochang/p/13615338.html
Copyright © 2011-2022 走看看