欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

I/O复制文件夹&递归&改名

程序员文章站 2024-03-09 10:30:47
...
  • 随机获取文本中的名称,一行一个名称。

    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();
    	}
    }