• Python——正则表达式的应用



    前言

    在这里插入图片描述


    File类

    是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

    方法有三类:1获取、2判断、3创建或删除

    public String getAbsolutePath() :返回此File的绝对路径名字符串
    public String getPath() :将此File转换为路径名字符串。
    public String getName() :返回由此File表示的文件或目录的名称。
    public long length() :返回由此File表示的文件的长度。

    • public boolean exists() :此File表示的文件或目录是否实际存在。
    • public boolean isDirectory() :此File表示的是否为目录。
    • public boolean isFile() :此File表示的是否为文件。

    public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    public boolean delete() :删除由此File表示的文件或目录。
    public boolean mkdir() :创建由此File表示的目录。
    public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

    public static void main(String[] args) throws Exception   {
    		String pathSeparator = File.pathSeparator;  //路径分隔符
    		String separator = File.separator;//文件名分隔符
    		System.out.println(pathSeparator  +"文件名分隔符"+separator);
    		File f = new File("D:\\Work\\aaa.txt");
    		//System.out.println(f.getAbsolutePath());
    		System.out.println(f.exists());//exists()` :此File表示的文件或目录是否实际存在
    		System.out.println(f.isDirectory());//此File表示的是否为目录。
    		System.out.println(f.isFile());//此File表示的是否为文件。
    		System.out.println("----------------1---------------------------");
    		File f2 = new File("newDir");
    		System.out.println(f2.exists());//此File表示的文件或目录是否实际存在
    		System.out.println(f2.mkdir());//创建由此File表示的目录
    		System.out.println(f2.exists());//此File表示的文件或目录是否实际存在
    		System.out.println(f2.getAbsolutePath());
    		System.out.println("---------------2----------------------------");
    		System.out.println(f2.delete());
    		File f3 = new File("newDir\\newDirb");
    		System.out.println(f3.mkdirs());
    	}  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    输出:

    ;文件名分隔符\
    false
    false
    false
    ----------------1---------------------------
    true
    false
    true
    E:\ENV20\20220905\newDir
    ---------------2----------------------------
    false
    false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    IO字符流与字节流

    输入流输出流
    字节流字节输入流 InputStream字节输出流 OutputStream
    字符流字符输入流 Reader字符输出流 Writer

    字符流

    一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。

    输出流

    public static void main(String[] args) throws IOException{
    		 FileWriter fw = new FileWriter("fw.txt");  //创建输出流对象
    		 fw.write(98);  //98对应字符'b'
    		 fw.write("b");
    		 fw.write("c");
    		 fw.write(30000);  //30000对应中文编码表里的汉字:田
    		 fw.flush(); //刷新缓冲区,流对象继续使用 
    		// fw.close();//刷新缓冲区,流对象不能继续使用 ,资源释放了
    	 }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行后,右键项目选择【Properties】,然后选择该文件的路径
    在这里插入图片描述在这里插入图片描述

    点进去就可以看到生成的【fw.txt】,输出:bbc田
    在这里插入图片描述在这里插入图片描述

    输入流

    // 输入流,需要在文件路径下先建文件(这里建的是fr.txt)写东西
    public static void main(String[] args) throws IOException{
    		 FileReader fr = new FileReader("fr.txt");  //创建字符输入流对象
    		 int b;//b用来保存数据
    		 while((b=fr.read()) != -1) {   
    			 //如果读到数据,那么就向下读  fr.read()每次可以读取一个字符的数据,读到文件末尾返回-1
    			 System.out.print((char)b);    //如果直接输出b则以int型输出
    		 }
    		 fr.close();
    	 }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    字节流

    public static void main(String[] args) throws IOException{
    		 DataInputStream in = new DataInputStream(new FileInputStream("fr.txt"));
    		 BufferedReader d  = new BufferedReader(new InputStreamReader(in));//逐行读取,br extends reader
    //		 String count;
    //		 while((count = d.readLine()) != null) {
    //			 System.out.println(count);
    //		 }
    		 DataOutputStream out = new DataOutputStream(new  FileOutputStream("test1.txt"));
    		 String count;
    		 while((count = d.readLine()) != null) {
    			out.writeBytes(count+",");
    		 } 
    		 d.close();
    		 out.close();
    	 }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    打印流

    平时我们在控制台打印输出,是调用 print方法 和 println方法完成的,这两个方法都来自于 java.io.PrintStream类,该类能够方便地打印任意类型的值。

    public static void main(String[] args) throws IOException{
    	 System.out.println(97);   //正常参数类型为字符串型,如果没加引号,也是以打印流形式直接输出了
    		 PrintStream ps = new PrintStream("ps.txt");  //实例化打印流对象,输出到ps.txt文件里
    		 ps.write(99); //输出99对应的Ascii
    		 System.setOut(ps);//调用系统的打印流,改变输出语句的目的地址,保存在ps.txt文件里
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    缓冲流

    能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。
    这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。

    例:将括号内的文本信息恢复顺序
    【5.半卷红旗临易水,7.报君黄金台上意,3.角声满天秋色里,1.黑云压城城欲摧,8.提携玉龙为君死!4.塞上燕脂凝夜紫。2.甲光向日金鳞开。6.霜重鼓寒声不起。】
    1.使用HashMap
    2.逐行读信息
    3.读完之后把读到的信息放到HashMap
    4.通过循环按顺序输出

    首先在项目路径下新建一个txt文件,这里起名(ps.txt),然后把要恢复的内容放进去
    在这里插入图片描述在这里插入图片描述

    public static void main(String[] args) throws IOException {
    		// 创建map集合,保存文本数据,键为序号,值为文字
    		/* 1.使用HashMap * */
    		HashMap<String, String> lineMap = new HashMap<>();
    		// 创建流对象 
    		BufferedReader br = new BufferedReader(new FileReader("ps.txt"));
    		BufferedWriter bw = new BufferedWriter(new FileWriter("fos.txt"));
    		// 读取数据  2.逐行读信息
    		String line = null;
    		while ((line = br.readLine()) != null) {
    			// 解析文本
    			String[] split = line.split("\\.");
    			// 保存到集合
    			// 3.读完之后把读到的信息放到HashMap
    			lineMap.put(split[0], split[1]);
    		}
    		// 释放资源
    		br.close();
    		// 遍历map集合 4.通过循环按顺序输出
    		for (int i = 1; i <= lineMap.size(); i++) {
    			String key = String.valueOf(i);
    			// 获取map中文本
    			String value = lineMap.get(key);
    			// 写出拼接文本
    			bw.write(key + "." + value);
    			// 写出换行
    			bw.newLine();
    		}
    		// 释放资源
    		bw.close();
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    这种写法就是在项目路径下生成了 fos.txt ,里面内容则是恢复顺序后的文本信息
    在这里插入图片描述

  • 相关阅读:
    《蛤蟆先生去看心里医生》阅读笔记
    kibana 导出es索引数据 和数据导入到索引
    【Swift 60秒】47 - Functions:Summary
    java-php-python-ssm学校旧书交易网站计算机毕业设计
    基于Python的Linear classification实验报告
    基于遗传算法的南昌周边城市旅游规划研究(Python实现)
    web前端电影项目作业源码 大学生影视主题网页制作电影网页设计模板 学生静态网页作业成品 dreamweaver电影HTML网站制作
    Python的张量运算
    求,帮看看第四题1111111111凑字数
    Kerberos
  • 原文地址:https://blog.csdn.net/rej177/article/details/127812135