JavaSE.20190507.File类.IO.

一.File类

     1.文件和目录路径名的抽象表示形式

          File(File parent, String child) 
                  根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 
          File(String pathname) 
                  通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 
          File(String parent, String child) 
                  根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 

/**
 * File类
 * 	文件和目录路径名的抽象表示形式。
 */
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
public class FileDemo01 {
	public static void main(String[] args) throws IOException {
		/*
		 * File(File parent, String child) 
		          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 
		   File(String pathname) 
		          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 
		   File(String parent, String child) 
		          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 
		 */
		File file1=new File("D:\\AAA");  //"D:/AAA/haha.txt"
		System.out.println(file1);
		
		File file2=new File("D://","AAA//hehe.txt");
		System.out.println(file2);
		
		File file3=new File(file1,"haha.txt");
		System.out.println(file3);
		
		 
		//1.boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。  如果文件设置只读,就不可修改
		System.out.println("canWrite():"+file3.canWrite());
		//2.boolean setReadOnly()
		System.out.println("setReadOnly():"+file3.setReadOnly());
		System.out.println("canWrite():"+file3.canWrite());
		//3.boolean createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
		//如果文件所在路径不存在,报错找不到指定的路径,如果路径都存在创建一个新的文件
		System.out.println("createNewFile():"+file2.createNewFile());
		//4. boolean delete() 删除
		System.out.println("delete():"+file2.delete());
		System.out.println("delete():"+file1.delete());
		//5.boolean exists()   测试此抽象路径名表示的文件或目录是否存在。 
		System.out.println("exists():"+file3.exists());
		System.out.println("exists():"+file2.exists());
		/*
		 * 6.File getAbsoluteFile() 
			          返回此抽象路径名的绝对路径名形式。 
			 String getAbsolutePath() 
			          返回此抽象路径名的绝对路径名字符串。 
		 */
		File file4=new File("hengheng.txt");
		System.out.println("getAbsoluteFile():"+file4.getAbsoluteFile());
		System.out.println("getAbsolutePath():"+file4.getAbsolutePath());
		
		System.out.println(new File("D:").getTotalSpace());
		System.out.println(new File("D:").getFreeSpace());
		
		//7.String getName()  返回由此抽象路径名表示的文件或目录的名称。 
		System.out.println("getName():"+file3.getName());
		System.out.println("getName():"+file1.getName());
		
		/*
		 * 8.String getParent() 
		          返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 
		   File getParentFile() 
		          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 
		 */
		System.out.println("getParent():"+file3.getParent());
		System.out.println("getParentFile():"+file1.getParentFile());
		//9.boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。 
		System.out.println("isAbsolute():"+file3.isAbsolute());
		System.out.println("isAbsolute():"+file4.isAbsolute());
		/*
		 * 10.boolean isDirectory() 
			          测试此抽象路径名表示的文件是否是一个目录。 
			  boolean isFile() 
			          测试此抽象路径名表示的文件是否是一个标准文件。 
			  boolean isHidden() 
			          测试此抽象路径名指定的文件是否是一个隐藏文件。 
		 */
		System.out.println("isDirectory():"+file1.isDirectory());
		System.out.println("isFile():"+file1.isFile());
		
		//11.long lastModified()  返回此抽象路径名表示的文件最后一次被修改的时间。 
		System.out.println("lastModified():"+new SimpleDateFormat().format(new Date(new File("D:/test.txt").lastModified())));
		//12.long length()  返回由此抽象路径名表示的文件的长度。 
		System.out.println("length():"+file3.length());
		
		/*
		 * 12.String[] list() 
 			  File[] listFiles() 
		 */
		String[] strs=file1.list();
		System.out.println(Arrays.toString(strs));
		System.out.println(Arrays.toString(file1.listFiles()));
		
		/*
		 * 13.boolean mkdir() 
			          创建此抽象路径名指定的目录。 
			  boolean mkdirs() 
			          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 
		 */
		File file6=new File("D:/DDD/EEE");
		File file7=new File("D:/CCCCC");
		File file8=new File("E:/CCCCC");
		System.out.println("mkdir():"+file6.mkdir());
		System.out.println("mkdir():"+file6.mkdirs());
		
		//boolean renameTo(File dest)  重新命名此抽象路径名表示的文件。 
		System.out.println("renameTo():"+file7.renameTo(file8));;
	}
}

二.IO 流

     1. 目的:读写文件中的内容
     2. 流:一连串流动的数据,先进先出的方式传输信息,管道
         数据源    目的地-->以程序为中心划分读入写出
     3. 流的分类:
         按照流向分:
                           输入流
                           输出流
         按操作单元分:
                               字节流
                               字符流
          按功能分:
                        节点流
                        功能流
           分类之间是相符想成的,互不冲突
        4.字节流:是万能的 *****  功能:节点流  
            InputStream 字节输入流  此抽象类是表示字节输入流的所有类的超类。 
            FileInputStream 从文件系统中的某个文件中获得输入字节。
            OutputStream 字节输出流

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class IODemo02 {
	public static void main(String[] args) throws IOException {
		//FileInputStream(File file) 
		//1.建立联系
		File file=new File("D:/AAA/haha.txt");
		//2.选择流
		InputStream is=new FileInputStream(file);
		//3.读入
		//每次读取一个字节数据,如果已达到末尾返回-1
		int num=is.read();
		//4.处理数据
		System.out.println((char)num);
		System.out.println((char)(is.read()));
		System.out.println((char)(is.read()));
		System.out.println((char)(is.read()));
		System.out.println((char)(is.read()));
		System.out.println((char)(is.read()));
		System.out.println(is.read());  //-1
		//5.关闭
		is.close();
	}
}

       5.字节输出流  OutputStream  此抽象类是表示输出字节流的所有类的超类
                              FileOutputStream文件输出流是用于将数据写入 File 

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class IODemo05 {
	public static void main(String[] args){
		//1.建立联系
		//File dest=new File("D:/test.txt");
		//2.选择流
		OutputStream out=null;
		try {
			out=new FileOutputStream("D:/test.txt",true);  //第二个参数默认false不追加,true追加
			//3.准备数据
			int num=99;
			byte[] car="告白气球".getBytes();
			//4.写出
			//每次只写一个字节    
			/*out.write(num);
			out.write(101);*/
			//每次写出多个
			out.write(car);
			//5.刷出
			out.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			//6.关闭
			try {
				if(out!=null){
				out.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

       6.文件的拷贝   
           数据源    程序        目的地
           关闭流:先打开的后关闭,后打开的先关闭

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyFile06 {
	public static void main(String[] args) {
		//1.建立联系
		File src=new File("D:/test.txt");
		File dest=new File("E:/test.txt");
		//2.选择流
		InputStream is=null;
		OutputStream out=null;
		try {
			is=new FileInputStream(src);
			out=new FileOutputStream(dest);
			//3.操作
			byte[] car=new byte[1024];
			int len=-1;
			while((len=is.read(car))!=-1){
				out.write(car, 0, len);
			}
			//4.刷出
			out.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			//5.关闭
			if(out!=null){
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if(is!=null){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

      7.字符流 :只能读写纯文本内容      功能分:节点流 
         Reader 字符输入流  FileReader 文件字符输入流
         Writer 字符输出流   FileWriter

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class CharDemo01 {
	public static void main(String[] args) throws IOException {
		//1.选择流
		Reader read=new FileReader("D:/test.txt");
		Writer write=new FileWriter("E:/hehe.txt");
		//2.读取
		char[] car=new char[1024];
		int len;
		/*int num=read.read();
		System.out.println((char)num);
		System.out.println((char)read.read());*/
		while((len=read.read(car))!=-1){
			write.write(car, 0, len);
		}
		//3.刷出
		write.flush();
		
		//3.关闭
		write.close();
		read.close();
	}
}

        8.字符流  字节流  -->节点流 
           包裹节点流,在节点流之上-->功能流|处理流
           处理流:增强功能,提高性能的作用,在节点流之外才能使用,不能代替节点流
           缓冲流:提高性能
           字节缓冲流 BufferedInputStream   BufferedOutputStream   无新增方法

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class BufferedDemo01 {
	public static void main(String[] args) {
		//1.建立联系
		File src=new File("D:/test.txt");
		File dest=new File("E:/test2.txt");
		//2.选择流
		InputStream is=null;
		OutputStream out=null;
		try {
			is=new BufferedInputStream(new FileInputStream(src));
			out=new BufferedOutputStream(new FileOutputStream(dest));
			//3.操作
			byte[] car=new byte[1024];
			int len=-1;
			while((len=is.read(car))!=-1){
				out.write(car, 0, len);
			}
			//4.刷出
			out.flush();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			//5.关闭
			if(out!=null){
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if(is!=null){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

       9.字符缓冲流  不能发生多态,因为存在新增方法
          BufferedReader 字符输入缓冲流        新增方法  readLine() 读取一行
          BufferedWriter 字符输出缓冲流            新增方法  newLine() 写出换行符

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class BufferedDemo02 {
	public static void main(String[] args) throws IOException {
		//1.选择流
		BufferedReader read=new BufferedReader(new FileReader("D:/test.txt"));
		BufferedWriter write=new BufferedWriter(new FileWriter("E:/hehe.txt"));
		//2.读取
//		String str=read.readLine();
		String s=null;
		while((s=read.readLine())!=null){
			write.write(s);
			write.newLine();
		}
		//3.刷出
		write.flush();
		
		//3.关闭
		write.close();
		read.close();
	}
}

       10.Data流 ->基本数据类型流,读入写出带有基本数据类型的数据+字符串数据
            功能流,必须要包裹节点流使用(字节流)
            DataInputStream  新增方法 readXxx()
            DataOutputStream 新增方法 writeXxx()

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class DataDemo {
	public static void main(String[] args) throws IOException {
		write("D://test.txt");
		read("D://test.txt");
	}
	
	public static void write(String dest) throws IOException{
		DataOutputStream os=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(dest)));
		String s="哈哈哈";
		double d=3.14;
		boolean flag=false;
		//写出
		os.writeUTF(s); //写出字符串
		os.writeDouble(d);
		os.writeBoolean(flag);
		//刷出
		os.flush();
		//关闭
		os.close();
	}
	
	public static void read(String src) throws IOException{
		DataInputStream is=new DataInputStream(new BufferedInputStream(new FileInputStream(src)));
		//读入带有数据类型的数据  写出什么顺序读入什么顺序
		String s=is.readUTF();
		double d=is.readDouble();
		boolean f=is.readBoolean();
		System.out.println(s);
		System.out.println(d);
		System.out.println(f);
		//关闭
		is.close();
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值