【209天】黑马程序员27天视频学习笔记【Day21-下】

发布时间:2019-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【209天】黑马程序员27天视频学习笔记【Day21-下】脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

叨逼叨两句

想做NB程序员,还是不要喝酒为妙。

21-(12-13):使用指定码表读写字符+转换流图解

  1. 每个文件都有对应的编码,若你用不同的编码表去读取文件,就会乱码。

  2. 字符流FileReader、FileWrITer都采用默认编码表。直接用来读取文件内容,会用默认编码表进行转换,不成功,写出的文件就乱码,所以还是用字节流FileinputStream读取后再用IputStreamReader转换合适。FileWriter同理。

    【209天】黑马程序员27天视频学习笔记【Day21-下】

  3. InputStreamReader:字节流通向字符流

  4. OutputStreamReader:字符流通向字节流

  5. 若不指定编码表,则为平台默认编码表。

    package com.test.demo001;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class Demo009 {
        public static void main(String[] args) throws IOException{
            //demo01();
            InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"),"utf-8"); 
            OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("GBK.txt"),"gbk");
            int c;
            while((c = isr.read())!= -1){
                osr.write(c);
            }
            isr.close();
            osr.close();
            
        }
    
        PRivate static void demo01() throws FileNotFoundException, IOException {
            FileReader fr = new FileReader("GBK.txt");
            FileWriter fw = new FileWriter("US-ASCII.txt");
            int c;
            while((c = fr.read())!= -1){
                fw.write(c);
            }
            
            fr.close();
            fw.close();
        }
    }
  6. 加上缓冲

    package com.test.demo001;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    
    public class Demo009 {
        public static void main(String[] args) throws IOException{
            //demo01();
            //demo02();
            BufferedReader br = 
                    new BufferedReader(new InputStreamReader(new FileInputStream("utf-8.txt"),"utf-8"));
            BufferedWriter bw = 
                    new BufferedWriter(new OutputStreamWriter(new FileOutputStream("GBK.txt"),"gbk"));
    
            int c;
            while((c = br.read())!= -1){
                bw.write(c);
            }
            br.close();
            bw.close();
        }
    
        private static void demo02() throws UnsupportedEncodingException, FileNotFoundException, IOException {
            InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"),"utf-8");
            OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("GBK.txt"),"gbk");
            int c;
            while((c = isr.read())!= -1){
                osr.write(c);
            }
            isr.close();
            osr.close();
        }
    
        private static void demo01() throws FileNotFoundException, IOException {
            FileReader fr = new FileReader("GBK.txt");
            FileWriter fw = new FileWriter("US-ASCII.txt");
            int c;
            while((c = fr.read())!= -1){
                fw.write(c);
            }
            
            fr.close();
            fw.close();
        }
    }

21-14:获取文本上字符出现的次数

package com.test.demo001;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class Demo009 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new FileReader("b.txt"));
        TreeMap<Character,Integer> tm = new TreeMap<>();
        int ch;
        while((ch = br.read())!= -1){
            char c = (char)ch;
            /*if(!tm.containsKey(c)){
                tm.put(c, 1);
            } else {
                tm.put(c, tm.get(c)+1);
            }*/
            tm.put(c, !tm.containsKey(c)? 1:tm.get(c)+1);
            }    
            br.close();
            BufferedWriter bw = new BufferedWriter(new FileWriter("times.txt"));
            for (Character key : tm.keySet()) {
                
                switch(key){
                case 't':
                    bw.write("\t" + "=" + tm.get(key));
                    break;
                case 'n':
                    bw.write("\n" + "=" + tm.get(key));
                    break;
                case 'r':
                    bw.write("\r" + "=" + tm.get(key));
                    break;
                default:
                    bw.write(key + "=" + tm.get(key));
                    break;
                }
                bw.newLine();
            }
            bw.close();
    }
}

21-15:试用版软件

package com.test.demo001;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Demo010 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("Config.txt"));
        String line = br.readLine();
        int times = Integer.parseInt(line);
        if(times > 0){
            System.out.println("您还有" + times-- + "次机会" );
            FileWriter fw = new FileWriter("Config.txt");
            fw.write(times + "");
            fw.close();
        } else {
            System.out.println("次数已到");
        } 
        br.close();
    }
}

21-16:递归

  1. 递归比较占内存

public static int fun(int nem)
    if(num == 1){
        return 1;
    }else {
        return num * fun(num - 1)
    }

21-17:递归练习:从键盘输入一个文件夹路径,打印出该文件夹下所有Java文件

package com.test.demo001;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Demo010 {
    public static void main(String[] args) throws IOException {
        File dir = getDir();
        printJavaFile(dir);
        
    }

    public static File getDir(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径");
        while(true){
            String line = sc.nextLine();
            File dir = new File(line);
            if(!dir.exists()){
                System.out.println("您录入的文件夹路径不存在,请重新输入");
            }else if(dir.isFile()){
                System.out.println("您录入的是文件路径,请重新输入文件夹路径");
            }else {
                return dir;
            }
        }
    }
    
    public static void printJavaFile(File dir){
        File[] subFiles = dir.listFiles();
        for (File subFile : subFiles) {
            if(subFile.isFile()&&subFile.getName().endsWith(".jpeg")){
                System.out.println(subFile);
            }else if(subFile.isDirectory()){
                printJavaFile(subFile);
            }
                
        }
    }

}

脚本宝典总结

以上是脚本宝典为你收集整理的【209天】黑马程序员27天视频学习笔记【Day21-下】全部内容,希望文章能够帮你解决【209天】黑马程序员27天视频学习笔记【Day21-下】所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。