zoukankan      html  css  js  c++  java
  • Java-IO

    Java-IO (Input Output)

    IO流用来处理设备之间的数据传输。

    Java.io 包:包含了所有操作输入、输出需要的类。

    按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同可以分为输入流和输出流,

    程序从输入流中读取数据,向输出流中写入数据。

    字节流的输入输出流分别为:InputStream 和 OutputStream

    字符流的输入输出流分别为:Reader 和 Writer

    字节流:字节流可以操作任何数据 字符流:字符流只能操作纯字符数据

    img

    图片来自:http://www.runoob.com/java/java-files-io.html

    1.File

    文件和目录路径名的抽象表现形式。

    常用方法:

    方法名 描述
    exists() 测试文件或目录是否存在
    createNewFile() 创建指定文件放回true,若存在则不创建返回false
    mkdir() 创建文件夹,若存在则不创建
    mkdirs() 创建文件夹,如果父文件夹不存在,则创建(创建多级目录)
    delete() 删除文件或文件夹,当删除文件夹时,若文件夹中有内容,则不能删除
    renameTo(File dest) 把文件重命名为指定文件路径,(用于重命名文件或移动文件)
    isDirectory() 判断是否是目录
    isFile() 判断你是否是文件
    getAbsolutePath() 获取绝对路径
    getPath() 获取相对路径
    getName() 获取名称
    length() 返回文件的长度,字节数,如果是文件夹则返回0
    list() 返回指定目录下所有文件或文件夹名称的字符串数组
    listFiles() 返回指定目录小所有文件或者文件夹的File数组
    lastModified() 获取最后一次的修改时间,单位毫秒

    2.FileInputStream

    用来从文件中读取数据

    			FileInputStream fos=new FileInputStream("test.txt");
    		 	//InputStreamReader 转换流 ,用于字节流转换为字符流
    			BufferedReader br=new BufferedReader(new InputStreamReader(fos));
    			String line; //一行行的读取数据
    			while((line=br.readLine())!=null) {
    				System.out.println(line);
    			}
    			br.close();// 关闭数据流
    			fos.close();
    

    3.FileOutputStream

    用来向文件中写入数据

    			FileOutputStream fos=new FileOutputStream("test1.txt",true);
    			String string="test1";
    			fos.write(string.getBytes());
    			fos.close();
    

    4.文件拷贝

    		FileInputStream fis=new FileInputStream("image.jpg");
    		FileOutputStream fos=new FileOutputStream("imagecopy.jpg");
    		int len=0;  //读取到有效字节个数 ,当没有数据时放回-1
    		byte[] buffer=new byte[1024*8];//定义缓冲区大小
    		while((len=fis.read(buffer))!=-1) { 
    			fos.write(buffer,0,buffer.length);
    		}
    		//关闭数据流
    		fis.close();
    		fos.close();
    

    5.Java 1.7新特性 自动关闭资源的try语句

    语法:

    try (  /* 需要自动关闭的资源*/   ){
                
            }
    

    示例:

     //文件拷贝
    try (InputStream fis = new FileInputStream(source);
            OutputStream fos = new FileOutputStream(target)){
     
            byte[] buf = new byte[8192];
            int i;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    

    注意:被关闭的对象需要实现 java.lang.AutoCloseable 接口

    6. 对象序列化 ObjectOutputStream和ObjectInputStream

    对象需要实现 Serializable 接口

    public class Person implements Serializable {
    
        public Person(int id, String name) {
            Id = id;
            Name = name;
        }
    
        public int Id;
        public String Name;
    }
    
       public static void writeObject(List<Person> list){
    
            try (ObjectOutputStream objectOutputStream =new ObjectOutputStream(new FileOutputStream("data.dat"))){
                objectOutputStream.writeObject(list);
    
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(" Successfully.");
        }
    
        public  static List<Person> readObject(){
    
            try (ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("data.dat"))){
                return  (List<Person>)objectInputStream.readObject();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
              return null;
        }
    

    7. InputStreamReader 和OutputStreamWriter

    他们起到作用是连接字节流和字符流。

    文章部分内容摘自网络和图书,如有侵权,请联系我。
  • 相关阅读:
    商业数据分析第七记
    商务数据分析第六记
    商业数据分析第五记
    学英语
    商业数据分析第四记
    商业数据分析第三记
    商业数据分析第二记
    SQL 存储过程笔记
    Java(Android)线程池
    android ImageView 宽度设定,高度自适应
  • 原文地址:https://www.cnblogs.com/-Tiger/p/7479555.html
Copyright © 2011-2022 走看看