I/O--(上)复制文件夹&递归&改名

  • 随机获取文本中的名称,一行一个名称。

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Random;
    
    /*
     * 要求:文本文件中存储了几个名称,写一个程序实现随机获取一个名称。
     */
    public class GetName {
    	public static void main(String[] args) throws IOException {
    		// 把文本文件中的数据存储到集合中
    		BufferedReader br = new BufferedReader(new FileReader("Name.txt"));
    		ArrayList<String> array = new ArrayList<String>();
    		String line = null;
    		while ((line = br.readLine()) != null) {
    			array.add(line);
    		}
    		br.close();
    	
    		Random r = new Random();
    		int index = r.nextInt(array.size());
    		
    		String name = array.get(index);
    		System.out.println("名称为:" + name);
    	}
    }
    
  • 复制单级文件夹

    /*
      要求:复制单极文件夹
     
     数据源:E:\\Java
     目的地:E:\\JavaTest
    */
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class CopyFolderDemo {
    	public static void main(String[] args) throws IOException {
    	
    		File srcFolder = new File("E:\\Java");		
    		File destFolder = new File("E:\\JavaTest");
    	
    		if (!destFolder.exists()) {
    			destFolder.mkdir();
    		}
    		
    		File[] fileArray = srcFolder.listFiles();
    		
    		for (File file : fileArray) {
    			
    			String name = file.getName(); 
    			File newFile = new File(destFolder, name); 
    
    			copyFile(file, newFile);
    		}
    	}
    
    	private static void copyFile(File file, File newFile) throws IOException {
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
    				file));
    		BufferedOutputStream bos = new BufferedOutputStream(
    				new FileOutputStream(newFile));
    
    		byte[] bys = new byte[1024];
    		int len = 0;
    		while ((len = bis.read(bys)) != -1) {
    			bos.write(bys, 0, len);
    		}
    
    		bos.close();
    		bis.close();
    	}
    }
    
    
  • 复制单级文件夹&改名

    /*for example*/
    /*
    要求:复制指定目录下的指定数据类型文件,并修改后缀名。
    指定的文件是:.java文件。
    指定的后缀名是:.txt
    指定的目录是:TestCc
    
    数据源:E:\\Java\\*.java
    目的地:E:\\Jad\\*.jad
     */
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FilenameFilter;
    import java.io.IOException;
    
    
    public class CopyFolderDemo {
    	public static void main(String[] args) throws IOException {
    		/*File(String pathname) 
    			通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
    		*/
    		File srcFolder = new File("E:\\Java");		
    		File destFolder = new File("E:\\Jad");
    		
    		if (!destFolder.exists()) {
    			destFolder.mkdir();
    		}
    		
    		File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
    			@Override
    			public boolean accept(File dir, String name) {
    				return new File(dir, name).isFile() && name.endsWith(".java");
    			}
    		});
    
    		// 遍历该File数组,得到每一个File对象.
    		for (File file : fileArray) {
    
    			/*
    			File(File parent, String child) 
    				从父抽象路径名和子路径名字符串创建新的 File实例。  
    			File(String pathname) 
    				通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。  
    			File(String parent, String child) 
    				从父路径名字符串和子路径名字符串创建新的 File实例。
    			*/
    
    			String name = file.getName();		
    			File newFile = new File(destFolder, name);
    			copyFile(file, newFile);
    		}
    		
    		//改名遍历过程.
    		File[] destFileArray = destFolder.listFiles();
    		for (File destFile : destFileArray) {
    			
    			String name =destFile.getName(); //DataTypeDemo.java
    			String newName = name.replace(".java", ".jad");//DataTypeDemo.jad
    			
    			File newFile = new File(destFolder,newName);
    			destFile.renameTo(newFile);
    		}
    		System.out.println("Over!");
    	}
    
    	/*文件复制函数*/
    	private static void copyFile(File file, File newFile) throws IOException {
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
    				file));
    		BufferedOutputStream bos = new BufferedOutputStream(
    				new FileOutputStream(newFile));
    
    		byte[] bys = new byte[1024];
    		int len = 0;
    		while ((len = bis.read(bys)) != -1) {
    			bos.write(bys, 0, len);
    		}
    
    		bos.close();
    		bis.close();
    	}
    }
    
  • 复制多级文件夹

    /*
     *要求:复制多极文件夹.
      数据源:E:\\JavaTest
     目的地:E:\\
     */
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class CopyFoldersDemo {
    	public static void main(String[] args) throws IOException {
    	
    		File srcFile = new File("E:\\JavaTest");		
    		File destFile = new File("E:\\");
    		
    		copyFolder(srcFile, destFile);
    	}
    
    	private static void copyFolder(File srcFile, File destFile)
    			throws IOException {
    		
    		if (srcFile.isDirectory()) {			
    			File newFolder = new File(destFile, srcFile.getName());
    			newFolder.mkdir();
    			
    			File[] fileArray = srcFile.listFiles();
    			for (File file : fileArray) {
    				copyFolder(file, newFolder);
    			}
    		} else {			
    			File newFile = new File(destFile, srcFile.getName());
    			copyFile(srcFile, newFile);
    		}
    	}
    
    	private static void copyFile(File srcFile, File newFile) throws IOException {
    		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
    				srcFile));
    		BufferedOutputStream bos = new BufferedOutputStream(
    				new FileOutputStream(newFile));
    
    		byte[] bys = new byte[1024];
    		int len = 0;
    		while ((len = bis.read(bys)) != -1) {
    			bos.write(bys, 0, len);
    		}
    
    		bos.close();
    		bis.close();
    	}
    }
    

猜你喜欢

转载自blog.csdn.net/CS_GaoMing/article/details/83828466
今日推荐