zoukankan      html  css  js  c++  java
  • File类相关操作

    1、File类常见方法:

    创建:

    boolean createNewFile():在指定位置创建文件

    如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文件,而且文件已经存在会发生覆盖

    boolean mkdir():创建文件夹,只能创建一级文件夹

    boolean mkdirs():创建多级文件夹

    renameTo():

    删除:

    boolean delete():删除失败,返回false

    void deleteOnExit():在程序退出时删除指定文件

    判断:

    boolean exists():判断文件是否存在

    boolean isFile():

    boolean isDirectory():

    在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在,通过exists()方法进行判断

    isHidden():是否为隐藏文件

    isAbsolute():是否为绝对路径

    获取信息:

    getName():

    String getPath():

    getParent():返回的是绝对路径中的文件父目录,如果获取的是相对路径,则返回空,如果相对路径中有上一层目录,那么该目录就是返回结果

    String getAbsolutePath():

    lastModified():

    length():返回文件长度

    Static File[] listRoots():返回系统中所有的盘符

    String [] list():返回该路径下所有的文件和目录——FilenameFilter()

    File[] listFiles():

    Properties类

    存取配置文件

    public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            Properties props=new Properties();
            FileInputStream fis=new FileInputStream("props.txt");
            props.load(fis);
            
            Set<String> keys=props.stringPropertyNames();
            for(String key:keys){
                String value=props.getProperty(key);
                System.out.println(key+":"+value);
            }
            
            FileOutputStream fos=new FileOutputStream("props.txt");
            props.setProperty("name", "hello");
            props.store(fos, null);
        }

    打印流

    字节打印流:
    PrintStream

    构造函数可以接收的参数类型

    1.file对象

    2.字符串路径

    3.字节输出流:OutputStream

    字符打印流
    PrintWriter

    public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(System.in));
            
            PrintWriter pw=new PrintWriter(System.out,true);
            String line= br.readLine();
            pw.println(line.toUpperCase());
            pw.flush();
            
            pw.close();
            br.close();
            /*while(!"over".equals(line)){
                pw.print(line.toUpperCase());
                line=br.readLine();
            }*/
        }

    合并流
    SequenceInputStream

    对象序列化(被操作的对象需要实现Serializable接口)

    ObjectInputStream,ObjectOutputStream

            FileOutputStream fos = new FileOutputStream("person.txt");
            ObjectOutputStream oos=new ObjectOutputStream(fos);
            Person person=new Person("lvjy",30);
            oos.writeObject(person);
            oos.close();
            
            FileInputStream fis = new FileInputStream("person.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Person p=(Person) ois.readObject();
            System.out.println(p);
            ois.close();    


    自定义版本号:public staitc final long serialVersionUID=42L

    新的类还能操作曾经被序列化的对象

    只能把堆里面的数据序列化,但是不能把其他区域中的数据序列化(static变量不能序列化)

    对非静态的成员也不想序列化的话,可以在序列化对象相关的成员变量加上trainsient关键字

    管道流

    PipedInputStream,PipedOutputStream

    package com.travelsky.io;
    
    import java.io.IOException;
    import java.io.PipedInputStream;
    import java.io.PipedOutputStream;
    
    public class PipedStreamDemo {
    
    	@SuppressWarnings("resource")
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
    		PipedInputStream in=new PipedInputStream();
    		PipedOutputStream out = new PipedOutputStream();
    		in.connect(out);
    		
    		PipedOut po = new PipedOut(out);
    		PipedIn pi = new PipedIn(in);
    		
    		new Thread(po).start();
    		new Thread(pi).start();
    	}
    
    }
    class PipedOut implements Runnable{
    	private PipedOutputStream pos;
    	public PipedOut(PipedOutputStream pos) {
    		super();
    		this.pos = pos;
    	}
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		System.out.println("piped out sleep");
    		try {
    			Thread.sleep(5000);
    			pos.write("hello,world".getBytes());
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	
    }
    class PipedIn implements Runnable{
    	private PipedInputStream pis;
    	
    	public PipedIn(PipedInputStream pis) {
    		super();
    		this.pis = pis;
    	}
    
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		byte[] buf =new byte[1024];
    		try {
    			System.out.println("piped in wait");
    			int len=pis.read(buf);
    			String content = new String(buf,0,len);
    			System.out.println(content);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    

     RandomAccessFile

    该类不算是IO体系中的子类,而是直接继承自Object

    但是它是IO包中成员,因为它具备读和写功能

    内部封装了一个数组,而且通过指针对数组的元素进行操作。

    可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置

    通过构造函数可以看出,该类只能操作文件

    RandomAccessFile(String name,String mode)  

    mode:r,rw,rws,rwd

    write方法只写出int类型的最低8位

    操作基本数据类型的流对象:DataStream

    DataInputStream,DatOutputStream

    readInt(),readBoolean,readDouble()

    writeInt(),writeBoolean,writeDouble()

    writeUTF(),readUTF():加强版的UTF-8

    操作字节数组

    ByteArrayInputStream:

    在构造的时候,需要接收数据源,而且数据源是一个字节数组

    ByteArrayOutputStream

    在构造的时候,不用定义数据目的,因为该对象中已经内部封装了一个可变长度的字节数组。这就是数据目的地。因为这两个流对象都操作的是数组,并没有使用系统资源,所以不用进行close关闭

    操作字符数组

    CharArrayReader与CharArrayWriter

    操作字符串

    StringReader,StringWriter

    Tomcat默认的解码方式为ISO8859-1

    get方式提交:必须手工转换字符编码

    post方式提交:可以通过setCharacterEncoding()函数来设定编码方式

    UTF-8修改版:

    单字节:0xxxxxxx

    两字节:110xxxxx 10xxxxxx

    三字节:1110xxxx 10xxxxxx 10xxxxxx

  • 相关阅读:
    C# 高级编程语言
    unity ForceMode
    UnityError 切换场景灯光变黑问题解决
    Unity Time.timeScale
    Unity 打开网页 Application.OpenURL(字符串);
    Unity www动态加载网上图片
    Unity GameObject.Find 和 transform.Find
    Unity UGUI按钮添加点击事件
    事务
    git和redis
  • 原文地址:https://www.cnblogs.com/lvjygogo/p/8718731.html
Copyright © 2011-2022 走看看