zoukankan      html  css  js  c++  java
  • IO相关Demo

    这几天复习了IO相关知识

    只为记录,好记性不如烂笔头

    有误请指正

    ありがとうございます。

    我的公众号

    作者:晨钟暮鼓c
    个人微信公众号:程序猿的月光宝盒

    1.判断存在,存在改名,并延迟删除,不存在新建

    package pers.day19;
    
    import java.io.File;
    
    /**
     * 判断存在,存在改名,并延迟删除,不存在新建
     * @author Administrator
     *
     */
    public class IODemon {
    	public static void main(String[] args) throws Exception{
    		test();
    	}
    
    	private static void test() throws Exception {
    		File dir = new File("E:");
    		File f1 = new File(dir,"jsc.txt");
    		System.out.println(f1.exists());
    		//不存在
    		if(!f1.exists()){
    			//新建
    			f1.createNewFile();
    		}else{
    			//存在,把他改名为test.txt,其中new 是新建file对象
    			f1.renameTo(new File(dir,"test.txt"));
    			Thread.sleep(10000);
    			new File(dir,"test.txt").delete();
    		}
    		
    	}
    }
    

    2.文件夹递归

    package pers.day19;
    
    import java.io.File;
    /**
     * 文件夹递归
     * @author Administrator
     *
     */
    public class IODemon2 {
    	public static void main(String[] args) {
    		//新建文件对象
    		File f = new File("E:/CAPH2018");
    		//查找所有文件
    		try {
    			listAllFiles(f);
    		} catch (Exception e) {
    			System.out.println("null");
    		}
    	}
    
    	private static void listAllFiles(File f) {
    		//得到所有文件及目录
    		File[] files = f.listFiles();
    		for (File file : files) {
    			//列出所有文件及目录
    			System.out.println(file);
    			//file如果是目录,进行递归
    			if(file.isDirectory()){
    				listAllFiles(file);
    			}
    		}
    	}
    }
    

    3.列出分层结构

    package pers.day19;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.Collections;
    
    /**
     * 列出分层结构
     * @author Administrator
     *
     */
    public class IODemon3 {
    	public static void main(String[] args) {
    		//效果:CAPH2018->LiveJT_01-AutoRun->Setup->AutoInst->LiveJT_01.exe
    		String file = "E:/CAPH2018/LiveJT_01-AutoRun/Setup/AutoInst/LiveJT_01.exe";
    		File f = new File(file);
    		//把他放在List里
    		ArrayList<String> parentNames = new ArrayList<>();
    		//自定义的方法
    		listAllParent(parentNames, f);
    		
    		System.out.println(parentNames);//答应得到的List
    		Collections.reverse(parentNames);//颠倒顺序
    		System.out.println(parentNames);//答应颠倒顺序后的List
    		
    		//新建一个字符串做拼接
    		StringBuilder sb = new StringBuilder(40);
    		//循环添加List中的内容拼接字符转
    		for (String name : parentNames) {
    			sb.append(name).append("->");
    		}
    		//删除最后的字符转
    		sb.deleteCharAt(sb.length() - 1).deleteCharAt(sb.length() - 1);
    		//最终打印
    		System.out.println(sb);
    	}
    
    	private static void listAllParent(ArrayList<String> parentNames, File f) {
    		//如果文件的上级目录的名字不等于空
    		if (!"".equals(f.getParentFile().getName())) {
    			//把这个名字加入parentNames的List中
    			parentNames.add(f.getParentFile().getName());
    		}
    
    		//如文件的上上级目录不等于空(有上上级目录)
    		if (f.getParentFile().getParentFile() != null) {
    			//就调用自己,文件是改文件的上级文件
    			listAllParent(parentNames, f.getParentFile());
    		}
    	}
    }
    

    4.批量修改文件名,截取掉所有视频文件:教育-Java学院-老师-

    package pers.day19;
    
    import java.io.File;
    
    /**
     * 批量修改文件名,截取掉所有视频文件:教育-Java学院-老师-.
     * @author Administrator
     *
     */
    public class IOdemon4 {
    	public static void main(String[] args) {
    		//路径
    		File dir = new File("E:/123");
    		//所有文件
    		File[] allFiles = dir.listFiles();
    		//需要删除的字段 
    		String deletes = "教育-学院-老师-";
    		//循环遍历
    		for (File file : allFiles) {
    			//打印获取到的文件
    			System.out.println(file);
    			//如果这个文件的名字包含需要删除的字段
    			if(file.getName().contains(deletes)){
    				//新的文件名,把需要删除的字段替换成空字符串
    				String newFileName = file.getName().replace(deletes, "");
    				//重命名文件
    				file.renameTo(new File(dir,newFileName ));
    			}
    		}
    		System.out.println("--------------------------------------------------");
    		//重新获取文件放入之前的File数组
    		allFiles = dir.listFiles();
    		//遍历
    		for (File file : allFiles) {
    			System.out.println(file);
    		}
    	}
    }
    

    5.文件过滤器

    package pers.day19;
    
    import java.io.File;
    import java.io.FilenameFilter;
    
    /**
     * 文件过滤器
     * @author Administrator
     *
     */
    public class IOdemon5 {
    	public static void main(String[] args) {
    		File dir = new File("E:/123");
    		
    		File[] files = dir.listFiles(new FilenameFilter() {
    			//新建匿名内部类
    			public boolean accept(File dir, String name) {
    				//这个文件是文件,且name以“.avi结尾”,为true,存到files数组中
    				return new File(dir,name).isFile() && name.endsWith(".avi");
    			}
    		});
    		for (File file : files) {
    			System.out.println(file);
    		}
    	}
    }
    

    6.文件字节输出

    package pers.day19;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Arrays;
    
    /**
     * 文件字节输出
     * @author Administrator
     *
     */
    public class IODemon6 {
    	public static void main(String[] args) throws Exception {
    		//1.创建目标对象(表示把数据保存到那一个文件)
    		File target = new File("file/test.txt");
    		//2.创建文件字节输出流对象
    		FileInputStream in = new FileInputStream(target);
    		//3.具体的输出操作
    		byte[] b = new byte[5];
    		System.out.println(Arrays.toString(b));
    		int len = -1;
    		
    		while((len = in.read(b)) != -1){
    		String str = new String(b,0,len);
    		System.out.println(str);
    		}
    		
    		//4.关闭资源
    		in.close();
    	}
    }
    

    7.文件字节输入

    package pers.day19;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    /**
     * 文件字节输入
     * @author Administrator
     *
     */
    public class IODemon7 {
    	public static void main(String[] args) throws Exception {
    		//1.创建目标对象(表示把数据保存到那一个文件)
    		File target = new File("file/test.txt");
    		//2.创建文件字节输出流对象
    		FileOutputStream out = new FileOutputStream(target,false);
    		//3.具体的输出操作
    		out.write("I LOVE U".getBytes(),0,"I LOVE U".length());
    		//4.关闭资源
    		out.close();
    	}
    }
    

    8.文件拷贝

    package pers.day19;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    /**
     * 文件拷贝
     * @author Administrator
     *
     */
    public class IODemon8 {
    	public static void main(String[] args) throws Exception {
    		//1.创建源
    		File srcFile = new File("file/test.txt");
    		File destFile = new File("file/test_copy.txt");
    		//2.创建输入流对象
    		FileInputStream in = new FileInputStream(srcFile);
    		FileOutputStream out = new FileOutputStream(destFile);
    		//3.读取操作
    		byte[] buffer = new byte[1024];//创建1024字节的缓冲区(存贮已经读取的字节数据)
    		int len = -1;//表示已经读取的字节数,如果-1表示文件读取到最后了
    		while ((len = in.read(buffer)) != -1) {
    			//打印读取的数据
    			System.out.println(new String(buffer,0,len));
    			//数据在buffer数组中
    			out.write(buffer, 0, len);
    		}
    		//4.关闭输入流对象(资源)
    		in.close();
    		out.close();
    	}
    }
    

    9.资源正确关闭

    package pers.day19;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    /**
     * 文件拷贝关闭资源
     * @author Administrator
     *
     */
    public class IODemon9 {
    	public static void main(String[] args) throws Exception {
    		//		test1();
    		test2();
    	}
    
    	/**
    	 * java1.7以前的正常关闭资源
    	 */
    	private static void test1() {
    		//声明资源对象
    		FileInputStream in = null;
    		FileOutputStream out = null;
    		try {
    			//可能出现的异常代码
    			//1.创建源
    			File srcFile = new File("file/test.txt");
    			File destFile = new File("file/test_copy.txt");
    			//2.创建输入流对象
    			in = new FileInputStream(srcFile);
    			out = new FileOutputStream(destFile);
    			//3.读取操作
    			byte[] buffer = new byte[1024];//创建1024字节的缓冲区(存贮已经读取的字节数据)
    			int len = -1;//表示已经读取的字节数,如果-1表示文件读取到最后了
    			while ((len = in.read(buffer)) != -1) {
    				//打印读取的数据
    				System.out.println(new String(buffer, 0, len));
    				//数据在buffer数组中
    				out.write(buffer, 0, len);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			//4.关闭输入流对象(资源)
    			try {
    				if (in != null) {
    					in.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    			try {
    				if (out != null) {
    					out.close();
    				}
    			} catch (Exception e3) {
    				e3.printStackTrace();
    			}
    		}
    	}
    
    	/**
    	 * java1.7新特性 自动关闭资源
    	 */
    	private static void test2() {
    		//1.创建源
    		File srcFile = new File("file/test.txt");
    		File destFile = new File("file/test_copy.txt");
    		try (
    				//打开资源的代码
    				//2.创建输入流对象
    				FileInputStream in = new FileInputStream(srcFile);
    				FileOutputStream out = new FileOutputStream(destFile);
    			) {
    			//可能出现异常的代码
    			//3.读取操作
    			byte[] buffer = new byte[1024];//创建1024字节的缓冲区(存贮已经读取的字节数据)
    			int len = -1;//表示已经读取的字节数,如果-1表示文件读取到最后了
    			while ((len = in.read(buffer)) != -1) {
    				//打印读取的数据
    				System.out.println(new String(buffer, 0, len));
    				//数据在buffer数组中
    				out.write(buffer, 0, len);
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    }
    
    
  • 相关阅读:
    Objective-C 和 Core Foundation 对象相互转换
    sql学习笔记(18)-----------数据库创建过程
    JVM虚拟机结构
    自己定义控件-MultipleTextView(自己主动换行、自己主动补齐宽度的排列多个TextView)
    Blue Jeans
    怎样注冊 diskgroup 到集群
    改动购物项图书数量的Ajax处理
    leetcode_Integer to Roman
    Buildroot 龙芯1C支持指南
    Buildroot構建指南--Overview【转】
  • 原文地址:https://www.cnblogs.com/jsccc520/p/10946721.html
Copyright © 2011-2022 走看看