Java SE学习之文件操作与IO流

1.文件操作

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;

/**
 * 
File(File parent, String child) 
从父抽象路径名和子路径名字符串创建新的 File实例。  
File(String pathname) 
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  
File(String parent, String child) 
从父路径名字符串和子路径名字符串创建新的 File实例。  
 * @author zhou'en'xian
 *
 */

public class FileLearning {

	public static void main(String[] args) throws IOException {
		File f1=new File("E:\\abc","a");
		File f2=new File("E:\\abc\\b");
		File f3=new File(f1,"aa.txt");
		/**
	     * File类的获取
		 */
		/*String absoultPath=f1.getAbsolutePath();//getAbsolutePath()方法:获取文件的绝对路径
		System.out.println(absoultPath);
		String path=f2.getPath();//getPath()方法:获取文件路径名
		System.out.println(path);
		String name=f3.getName();//getName()方法:获取文件名称
		System.out.println(name);
		long fileLength=f3.length();//length()方法:获取文件大小(字节长度)
		System.out.println(fileLength);*/
		/**
		 * 文件以及文件夹的创建和删除
		 */
		/*if(f3.createNewFile()) {
		//createNewFile方法:创建文件,如果文件不存在,新建文件并返回true;如果文件存在则返回false
			System.out.println("文件创建成功!");
		}else{
			System.out.println("文件已经存在!");
		};
		System.out.println(f3.exists());
		//exists()方法:判断文件是否存在
		//delete()方法:删除文件,不进回收站
		if(f2.exists()) {
			f2.delete();
			System.out.println("文件已经删除!");
		}else {System.out.println("文件不存在!");};
		File f4=new File("E:\\abc\\e");
		//mkdir()方法:创建单级目录并返回true,如果存在,返回false
		//mkdirs()方法:创建多级目录并返回true,如果存在,返回false
		if(f4.mkdir()) {
			System.out.println("单级目录已经创建!");
		};
		File f5=new File(f1,"ab");
		if(f5.mkdirs()) {
			System.out.println("多级目录已经创建!");
		};
		//判断此路径名下的文件是文件还是文件夹
		//isFile()方法:判断文件,返回boolean值;isDirectory():判断文件夹,返回boolean值
		System.out.println(f3.isDirectory());
		System.out.println(f3.isFile());*/
		/**
		 * 文件过略
		 */
		/*String file[]=f1.list();
		for(String i:file) {
			System.out.println(i);
		};
		File files[]=f2.listFiles();
		for(File fie:files) {
			System.out.println(fie);
		};*/
		/**listFiles(FileFilter filter)方法:File类中的listFiles(FileFilter filter)
		 * 方法参数是接口Interface FileFilter,并且该接口没有实现类,仅有一个方法
		 * accept(File pathname) ,于是建立myFileter类  实现FileFilter,重写accept()方法*/
		File Files[]=f1.listFiles( new myFilenameFilter());
		for(File f:Files) {
			System.out.println(f);
		};
		//File f2=new File("E:\\abc\\b");
		File file1[]=f2.listFiles(new MyFilter());
		for(File u:file1) {
			System.out.println(u);
		};

	}

}
class myFilenameFilter implements FilenameFilter{

	@Override
	public boolean accept(File dir, String name) {
		
		return name.endsWith("csv");
	}}
class MyFilter implements FileFilter{

	@Override
	public boolean accept(File pathname) {
		String s=pathname.getName();
		return s.endsWith("txt");
	}}

 

2.IO流

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.util.Date;

public class FileLearn  {
	
	public static void main(String[] args) throws IOException  {
		File fi=new File("E:\\abc\\c\\ca.txt");
		/**字节输入输出流
		 *FileOutputStream:字节输出流;write
		 *FileInputStream:字节输入流;read
		 */
		/* FileOutputStream out=new FileOutputStream(fi);
		String s="i love java!";
		byte by[]=s.getBytes();//编码过程
		out.write(by);
		out.close();
		FileOutputStream fos=new FileOutputStream(fi,true);
		String ss="\r\n"+"i love hpu!";//换行写
		fos.write(ss.getBytes());
		fos.close();*/
		/**FileInputStream构造方法
		 * FileInputStream(String name) 
		 * FileInputStream(File file) 
		 */
		/*FileInputStream fis=new FileInputStream(fi);
     	int ch =0;
     	//read()方法:从该输入流读取一个字节的数据,读不到返回-1
		while((ch=fis.read())!=-1) {
			System.out.print((char)ch);
		};
		byte by[]=new byte[1024];
		int len;
		//read(byte[] b)方法:从该输入流读取最多 b.length个字节的数据为字节数组,读不到返回-1
		while((len=fis.read(by))!=-1) {
			System.out.println(new String(by,0,len));
		};
		fis.close();*/
		/**
		 * 字符输入输出流
		 * 字符输入流:Reader
		 * 字符输出流:Writer
		 */
		/*File fi1=new File("E:\\abc\\b\\ba.txt");
		FileOutputStream outs=new FileOutputStream(fi1);
		String sx="我爱中国!";
		outs.write(sx.getBytes());
		outs.close();
		//FileReader:读取字符流
		Reader rea=new FileReader(fi1);
		int lengt;
		char ch[]=new char[1024];
		while((lengt=rea.read(ch))!=-1) {
			System.out.print(new String(ch,0,lengt));
		};
		rea.close();
		//FileWriter:写入字符流
		File fi2=new File("E:\\abc\\b\\bc.txt");
		FileWriter fiwi=new FileWriter(fi2);
		String sa="我在未来等你!";
		fiwi.write(sa);
		fiwi.flush();
		fiwi.close();*/
		/**
		 * 转化流	
		 * OutputStreamWriter类:字符流通向字节流的桥梁;将字符串按照指定的编码表转成字节
		 * 构造方法:OutputStreamWriter(OutputStream out, String charsetName) 
		 *          OutputStreamWriter(OutputStream out) 
		 * InputStreamReader类:字节流通向字符流的桥梁;使用指定的字符编码表读取字节并将
		  *其解码为字符
		  *构造方法:InputStreamReader(InputStream in, String charsetName)
		  *          InputStreamReader(InputStream in) 
		 */        
		
		 /*FileOutputStream fi3=new FileOutputStream("E:\\abc\\c\\ca.txt");
	     OutputStreamWriter fops=new OutputStreamWriter(fi3, "utf-8");
	     fops.write("我在河南理工大学等你!");
	     fops.close();
	     fi3.close();
	     FileInputStream fi4=new FileInputStream("E:\\abc\\c\\ca.txt");
	     InputStreamReader isr=new InputStreamReader(fi4, "utf-8");
	     int len;
	     while((len=isr.read())!=-1) {
	    	 System.out.print((char)len);
	     };
	     fi4.close();
	     isr.close();*/
		/**
		 * 缓冲流
		 */
		/**
		 * 字节缓冲输出流BufferedOutputStream
		 * 构造方法:public BufferedOutputStream(OutputStream out)
		 * 创建一个新的缓冲输出流,以将数据写入指定的底层输出流
		 */
		/*File fie4=new File ("E:\\abc\\d\\da.txt");
		FileOutputStream out1=new FileOutputStream(fie4);
		BufferedOutputStream buf=new BufferedOutputStream(out1);
		String s_1="I wait for you in hpu";
		buf.write(s_1.getBytes());
		buf.close();*/
		/**
		 * 字节缓冲输入流 BufferedInputStream
		 * 构造方法:public BufferedInputStream(InputStream in)
		 */
		/*FileInputStream fin1=new FileInputStream("E:\\abc\\d\\da.txt");
		BufferedInputStream buf1=new BufferedInputStream(fin1);
		int ch=0;
		while((ch=buf1.read())!=-1) {
			System.out.print((char)ch);
		};*/
		/**
		 * 字符缓冲输出流 BufferedWriter
		 * 构造方法:BufferedWriter(Writer out)
		 */
		/*FileWriter fil3=new FileWriter("E:\\abc\\d\\db.txt");
		BufferedWriter buf2=new BufferedWriter(fil3);
		for(int i=0;i<6;i++) {
			buf2.write("河南理工大学!");
			buf2.newLine();
			//newLine()写入一个行分隔符
		};
		buf2.close();*/
		/**
		 * 字符缓冲输入流 BufferedReader
		 * 构造方法:BufferedReader(Reader in)
		 */
		/*FileReader fil4=new FileReader("E:\\abc\\d\\db.txt");
		BufferedReader buf3=new BufferedReader(fil4);
		String line=null;
		//public String readLine() 读取一个文本行,包含该行内容的字符串,
		//不包含任何行终止符,如果已到达流末尾,则返回 null
		while((line=buf3.readLine())!=null) {
			System.out.println(line);
		};
		buf3.close();*/
		/**
		 * 字节数组流
		 *  ByteArrayInputStream和ByteArrayOutputStream
		 *  构造方法:ByteArrayInputStream(byte[] buf)
		 *  构造方法: ByteArrayOutputStream() 
		 */
	     //利用字节数组流复制图片C:\Users\zhou'en'xian\Pictures\2019-03
	    /*FileOutputStream fos1=null;
	    FileInputStream fis1=null;
        ByteArrayOutputStream baos=null;
        ByteArrayInputStream bais=null;
    try {
    	fis1=new FileInputStream("C:\\Users\\zhou'en'xian\\Pictures\\2019-03\\12.jpg");
    	baos=new ByteArrayOutputStream();
    	fos1=new FileOutputStream("C:\\Users\\zhou'en'xian\\Desktop\\my.jpg");
    byte buf[]=new byte[1024*1024];//设置缓冲数组容器
    int len=0;
    while((len=fis1.read(buf))!=-1) {
    	baos.write(buf, 0, len);
    } 
    byte[] by=baos.toByteArray();
    bais=new ByteArrayInputStream(by);
    int length;
    while((length=bais.read(buf))!=-1) {
    	fos1.write(buf, 0, length);
    };
    }catch(IOException e) {
    	e.printStackTrace();
    }finally{
    	try {
    		if(fis1!=null) {
    			fis1.close();
    		}
    	}catch(IOException e) {
    		e.printStackTrace();
    	}
    	try {
    		if(fos1!=null) {
    		fos1.close();	
    		};
    		}catch(IOException e) {
    		e.printStackTrace();
    	};
    }*/
		/**数据流
		 * DataInputStream和DataOutputStream
		 *提供了可以存取与机器无关的所有Java基础
		 *类型数据(如:int、double、String等)的方法。
		 *构造方法:DataInputStream(InputStream in) 
		 *构造方法:DataOutputStream(OutputStream  out)
		 */
		/*ByteArrayOutputStream byout=new ByteArrayOutputStream();
		//ByteArrayInputStream byin=new ByteArrayInputStream(null);
		DataOutputStream data=new DataOutputStream(new BufferedOutputStream(byout));
		data.write(4);
		data.writeBoolean(true);
		data.writeUTF("hpu");
		data.writeFloat(3);
		data.flush();
		byte[] by=byout.toByteArray();
		DataInputStream datain=new DataInputStream(new BufferedInputStream(
				new ByteArrayInputStream(by)));
		int a=datain.read();
		boolean b=datain.readBoolean();
		String c=datain.readUTF();
		float d=datain.readFloat();
		System.out.println(a+"-"+b+"-"+c+"-"+d);*/
		/**
		 * 对象流
		 * ObjectInputStream/ObjectOutputStream
		 */
		write();
		read();
		}
	public static void write() {
		FileOutputStream  fout=null;
		ObjectOutputStream obj=null;
		try {
			  fout=new FileOutputStream("E:\\abc\\e\\ec.txt");
			  obj=new ObjectOutputStream(fout);
			  obj.writeInt(3);;
			  obj.writeBoolean(true);
			  obj.writeObject(new Date());
			  obj.flush();
		} catch (FileNotFoundException e) {
			
			e.printStackTrace();
		} catch (IOException e) {	
			e.printStackTrace();
		}finally {
			if(fout!=null) {
				try {
					fout.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			
			};
			if(obj!=null) {
				try {
					obj.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			};
		};
	};
	public static void read() {
		FileInputStream fin=null;
		ObjectInputStream objin=null;
		BufferedInputStream buf=null;
		try {
			fin=new FileInputStream("E:\\abc\\e\\ec.txt");
			buf=new BufferedInputStream(fin);
			objin=new ObjectInputStream(buf);
			System.out.println(objin.readInt());
			System.out.println(objin.readBoolean());
			System.out.println(objin.readObject());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally {
			if(fin!=null) {
				try {
					fin.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			};
			if(buf!=null) {try {
				buf.close();
			} catch (IOException e) {
				
				e.printStackTrace();
			}};
			if(objin!=null) {
				try {
					objin.close();
				} catch (IOException e) {
					
					e.printStackTrace();
				}
			};
		}
	};
	
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1 JAVA SE 2 1.1 深入JAVA API 2 1.1.1 Lang包 2 1.1.2 集合类 8 1.1.2.1.1 日期类Date 9 1.1.2.1.2 日历类Calendar 10 1.1.2.1.3 随机数类Random 11 1.1.2.1.4 向量类Vector 12 1.1.2.1.5 栈类Stack 13 1.1.2.1.6 哈希表类Hashtable 14 1.1.2.1.7 位集合类BitSet 15 Hashtable类 20 1.1.3 JAVA IO包 24 1.1.4 与时间有关的类Date,DateFormat,Calendar 47 1.2 深入理解嵌套类和内部类 47 1.2.1 什么是嵌套类及内部类? 47 1.2.2 静态嵌套类 48 1.2.3 在外部类中定义内部类 48 1.2.4 在方法中定义内部类 49 1.2.5 匿名内部类 49 1.2.6 内部类使用的其它的问题 50 1.3 文件和流 51 1.3.1 什么是数据流 51 1.3.2 InputStream 的方法有: 51 1.3.3 OutputStream 的方法: 51 1.3.4 File 类 51 1.3.5 文件流的建立 52 1.3.6 缓冲区流 53 1.3.7 原始型数据流 53 1.3.8 对象流 54 1.3.9 字符流 InputStreamReader/OutputStreamWriter 55 1.3.10 随机存取文件 RandomAccessFile 56 1.3.11 小结 56 1.4 java中的一些常用词汇 56 1.5 J2SE学习中的30个基本概念 58 1.6 Java线程 60 1.7 Java 5.0多线程编程 65 1.8 Java Socket编程 80 1.9 Java的内存泄漏 85 1.10 抽象类与接口的区别 86 1.11 Java变量类型间的相互转换 87 2 JAVA与WEB 87 2.1 JMX规范 87 2.1.1 JMX概述 87 2.1.2 设备层(Instrumentation Level) 88 2.1.3 代理层 89 2.1.4 分布服务层 90 2.1.5 附加管理协议API 90 2.1.6 JMX的当前实现及应用 91 2.1.7 小结 91 2.2 应用 JMX 最佳实践 91 2.3 Java/J2EE中文问题终极解决之道 95 2.4 Java Web应用中的任务调度 96 2.5 用连接池提高Servlet访问数据库的效率 99 2.6 应用服务器的集群策略及Java EE 5.0 111 2.7 Servlet中的Listener的应用 112 2.8 JSTL(JSP标准标签库)介绍 115 3 JAVA扩展 119 3.1 Log4j基本使用方法 119 3.2 Dom4j 使用简介 120 3.3 Java 语言的 XML 验证 API 138 3.4 hibernate的hello word 143 3.5 JavaMail(JAVA邮件服务)API详解 145 3.6 jxl.jar 包简介 150 3.7 Java与XML联合编程之SAX篇 154 3.8 Java与XML联合编程之DOM篇 159 4 其他 165 4.1 代码复用的规则 165 4.2 Java IO 包中的Decorator模式 168

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

城南皮卡丘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值