【I/O流】知识点合集

替换文本文件内容

public static void main(String[] args) throws IOException {
		//替换前字符串
		String before="a";
		//替换后字符串
		String after="b";
		
		//创建文件读流
		FileReader reader=null;
		//创建文件写流
		FileWriter writer =null;
		//使用StringBuilder对想保存文件内容
		StringBuilder sb=new StringBuilder();
		//声明文件读入标识
		int flag=0;
		//使用字符数组读入文件
		char[] temp=new char[1024];
		File textFile=new File("f:\\1.txt");
		
		try {
			//使用选择的文件创建读流
			reader=new FileReader(textFile);
			while((flag=reader.read(temp))!=-1){
				//读入文件中的内容
				sb.append(temp);
			}
			//替换字符串
			String content=sb.toString().replace(before, after);
			//创建文件写流
			writer =new FileWriter(textFile);
			//将替换后的字符串写入到文件
			writer.write(content);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			writer.flush();
			writer.close();
		}	
}

文件重命名和快速移动文件

    File file=new File("F:\\1.txt");
    //既可以修改名称,有可以修改绝对路径,实现快速移动文件	
    file.renameTo(new File("F:\\2.txt"));

对大文件实现分割、合并处理

	/**
	 * 
	 * @param commFile 需要分割的文件
	 * @param untieFile 分割后保存的文件
	 * @param filesize 分割多少个
	 */
	public void fenGe(File commFile,File untieFile,int filesize){
		FileInputStream fis=null;
		//用来指定分割文件以MB为单位
		int size =1024*1024;
		
		try {
			//如果保存分割文件地址不是路径
			if(untieFile.isDirectory()){
				//创建该路径
				untieFile.mkdirs();
			}
			size=size*filesize;
			//获取文件大小
			int length=(int)commFile.length();
			//获取文件大小除以MB的得数
			int num=length/size;
			//获取文件大小与MB相除的余数
			int yu=length % size;
			//获取保存文件的完成路径信息
			String newfengeFile=commFile.getAbsolutePath();
			int fileNew =newfengeFile.lastIndexOf(".");
			//截取字符串
			String strNew= newfengeFile.substring(fileNew,newfengeFile.length());
			//创建FileInputStream类对象
			fis=new FileInputStream(commFile);
			//创建文件数组
			File[] fl=new File[num+1];
			int begin=0;
			//循环遍历数组
			for(int i=0;i<num;i++){
				//指定分割后小文件的文件名
				fl[i]=new File(untieFile.getAbsolutePath()+"\\"+(i+1)+strNew+".tem");
				if(!fl[i].isFile()){
					//创建该文件
					fl[i].createNewFile();
				}
				FileOutputStream fos=new FileOutputStream(fl[i]);
				byte[] bl=new byte[size];
				//读取分割后的小文件
				fis.read(bl);
				//写文件
				fos.write(bl);
				begin=begin+size*1024*1024;
				//关闭流
				fos.close();
				
			}
			//文件大小与指定文件分割大小相除的余数不为0;
			if(yu !=0){
				//指定文件分割后数组中最后一个文件名
				fl[num]=new File(untieFile.getAbsolutePath()+"\\"+(num+1)+strNew+".tem");
				if(!fl[num].isFile()){
					//新建文件
					fl[num].createNewFile();
				}
				FileOutputStream fyu=new FileOutputStream(fl[num]);
				byte[] byt=new byte[yu];
				fis.read(byt);
				fyu.write(byt);
				fyu.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
 
/**
	 * 合并文件
	 * @param file 需要合并的文件
	 * @param cunDir 合并后的文件
	 * @param hz 
	 */
	public void heBing(File[] file,File cunDir, String hz){
		try {
			//指定分割后文件的文件名
			File heBingFile=new File(cunDir.getAbsoluteFile()+"\\UNTIE"+hz);
			if(!heBingFile.isFile()){
				heBingFile.createNewFile();
			}
			//创建FileOutputStream对象
			FileOutputStream fos=new FileOutputStream(heBingFile);
			//循环遍历要进行合并的文件数组对象
			for(int i=0;i<file.length;i++){
				FileInputStream fis=new FileInputStream(file[i]);
				//获取文件长度
				int len=(int)file[i].length();
				byte[]bRead=new byte[len];
				//读取文件
				fis.read(bRead);
				//写入文件
				fos.write(bRead);
				//将流关闭
				fis.close();
				
			}
			fos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

对文件进行读取

仅需要用File对象构造一个Scanner对象

Scanner in= new Scanner(Paths.get("myfile.tet"),"UTF-8");

如果文件名中含反斜杠符号,需要在每个反斜杠之前加一个额外的反斜杠
如:“c:\mydirectory\myfile.txt”

文件转字符串

  public static String file2String(File file){
        try {
            BufferedReader buffer = new BufferedReader(new FileReader(file));
            StringBuilder sb = new StringBuilder();
            String temp;
            while((temp = buffer.readLine()) !=null ){
                sb.append(temp);

            }
            return sb.toString();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
疫情居家办公系统管理系统按照操作主体分为管理员和用户。管理员的功能包括办公设备管理、部门信息管理、字典管理、公告信息管理、请假信息管理、签到信息管理、留言管理、外出报备管理、薪资管理、用户管理、公司资料管理、管理员管理。用户的功能等。该系统采用了MySQL数据库,Java语言,Spring Boot框架等技术进行编程实现。 疫情居家办公系统管理系统可以提高疫情居家办公系统信息管理问题的解决效率,优化疫情居家办公系统信息处理程,保证疫情居家办公系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理疫情居家办公系统信息,包括外出报备管理,培训管理,签到管理,薪资管理等,可以管理公告。 外出报备管理界面,管理员在外出报备管理界面中可以对界面中显示,可以对外出报备信息的外出报备状态进行查看,可以添加新的外出报备信息等。签到管理界面,管理员在签到管理界面中查看签到种类信息,签到描述信息,新增签到信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值