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
    		}
    	}
    }
    
    
  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/jsccc520/p/10946721.html
Copyright © 2011-2022 走看看