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

IO

程序员文章站 2022-05-28 11:37:11
...
package Test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IO {
	public static void main(String[] args) {
		String path ="C:\\Users\\pc\\Desktop\\IO";
		String data="C:\\Users\\pc\\Desktop\\IO\\data1.txt";
		IO io = new IO();
		File file = new File(path);
		io.writeFile(file,path,5,data);
	}
	
	/**
	 * 
	 * 在指定的文件夹下创建文件夹
	 * @param path
	 * @return
	 */
	public static File createDirctory(String path) {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
		String date = df.format(new Date());//文件夹名日期
		File file = new File(path,date);
		boolean mkdirs = file.mkdirs();//新建文件夹
		if(mkdirs) {
			return file;
		}
		return null;
	}
	
	/**
	 * @param file 统计的是哪个文件夹
	 * @return 当前文件夹下的文件个数
	 */
	public static int listfile(File file) {
		int countfile=0;
		if(file.isDirectory()) {//判断是否是文件夹
			File[] files=file.listFiles();
			for(File fileIndex:files) {
				if(!fileIndex.isDirectory()) {
					countfile++;
//					listfile(fileIndex);
				}
			}
		}
		return countfile;
	}
	
	/**
	 * @param file 统计的是哪个文件夹
	 * @return 当前文件夹下的文件夹个数
	 */
	public static int listfolder(File file) {
		int countfolder = 0;
		if(file.isDirectory()) {//判断是否是文件夹
			File[] files=file.listFiles();
			for(File fileIndex:files) {
				if(fileIndex.isDirectory()) {
//					listfile(fileIndex);
					countfolder++;
				}
			}
		}
		return countfolder;
	}
	
	/**
	 * 在指定的文件夹下创建文件
	 * @param file
	 * @return
	 */
	public static File createFile(File file) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");//设置日期格式
		String fileName = sdf.format(new Date())+".txt";//文件名日期
		File createFile = new File(file,fileName);
		try {
			boolean createNewFile = createFile.createNewFile();//新建文件
			if(createNewFile) {
				return createFile;
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 在指定的文件夹中写文件
	 * @param fileDirctory
	 * @param num 创建文件的个数
	 */
	public void writeFile(File file,String path,int num,String data) {
		try {
			while(listfolder(file) < 10) {
				File fileDirctory = createDirctory(path);
				for(int i = 0; i < num; i++) {
					//创建文件
					File createFile = createFile(fileDirctory);
					//像文件中写数据
					//封装目的地
					BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(createFile),"UTF-8"));
					//封装数据源
					BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(data),"UTF-8"));
					//读写数据
					char[] chs = new char[1024];//262144
					int len;
					while((len=br.read(chs))!=-1) {
						//判断数据大小是否大于100K
						while((createFile.length()/1024f)<100) {
							bw.write(chs, 0,len);
							bw.flush();
						}break;
					}
					br.close();
					bw.close();
				}
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
//	public static void write(File file,File file1) {
//		String path ="C:\\Users\\pc\\Desktop\\IO";//新建文件夹路径
//		File pathfile=new File(path);
//		try {
//			//封装数据源
//			BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\pc\\Desktop\\IO\\data.txt"));
//			//封装目的地
//			BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1),"UTF-8"));
//			//读写数据
//			char[] chs=new char[1024];//262144
//			int len=0;
//			while((len=br.read(chs))!=-1) {
//				//判断跟路径下是否达到10个文件夹
//				if(listfolder(pathfile)<=10) {
//					if(listfile(file)<6) {//小于6,已创建
//						if((file1.length()/1024f)<100) {
//							bw.write(chs,0,len);
//							bw.flush();
//							System.out.println(file1.length()/1024f);
//						}else {
//							file1.delete();
//							createFile(file);
////							if((file1.length()/1024f)==0) {
////								file1.delete();
////							}
//							}
//						}else {
//							file.delete();
//							createDirctory(path);
//					}
//				}
//			}
//			bw.close();
//			br.close();
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//	}
}

package Test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class IOread {
	public static void main(String[] args) {
		String path="C:\\Users\\pc\\Desktop\\IO\\data.txt";
		File file=new File("C:\\Users\\pc\\Desktop\\IO");
		//存放目录及其子目录下的所有文件对象
		List<File> myfile=new ArrayList<File>();
        //开始遍历
        listDirectory(file,myfile);
		for(File files : myfile){
			System.out.println("文本文件:"+files.getAbsolutePath());
				File fileadd = new File(path);
		        BufferedReader reader = null;
		        String tempString = null;
		        try {
		            reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileadd),"UTF-8"));
		            // 一次读入一行,直到读入null为文件结束
		            while ((tempString = reader.readLine()) != null) {
		                if(files.length()/1024f<200){
		                	addfile(files,tempString);
		                }
		            }
		            reader.close();
		        } catch (IOException e) {
		            e.printStackTrace();
		        } 
			}
        }
	/**
     * 输出文件夹
     * 遍历目录及其子目录下的所有文件并保存
     * @param path 目录全路径
     * @param myfile 列表:保存文件对象
     */
	public static void listDirectory(File path, List<File> myfile){
        if (!path.exists()){
            System.out.println("文件名称不存在!");
        }else{
            if (path.isFile()){
                myfile.add(path);
            } else{
                File[] files = path.listFiles();
                for (int i = 0; i < files.length; i++  ){
                	if (files[i].isDirectory()) {
                	    System.out.println("文件夹:"+files[i]);
                	   }
                    listDirectory(files[i], myfile);
                }
            }
        }
    }
	public static void addfile(File fileName, String content) {     
        FileWriter writer = null;    
        try {       
            // 打开一个写文件器     
            writer = new FileWriter(fileName, true);      //true表示以追加形式写文件 
            writer.write(content);         
        } catch (IOException e) {       
            e.printStackTrace();       
        } finally {       
            try {       
                if(writer != null){    
                    writer.close();       
                }    
            } catch (IOException e) {       
                e.printStackTrace();       
            }       
        }     
    }  
}