脚本宝典收集整理的这篇文章主要介绍了【209天】黑马程序员27天视频学习笔记【Day21-下】,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
叨逼叨两句
@H_406_4@想做NB程序员,还是不要喝酒为妙。
21-(12-13):使用指定码表读写字符+转换流图解
每个文件都有对应的编码,若你用不同的编码表去读取文件,就会乱码。
字符流FileReader、FileWrITer都采用默认编码表。直接用来读取文件内容,会用默认编码表进行转换,不成功,写出的文件就乱码,所以还是用字节流FileinputStream读取后再用IputStreamReader转换合适。FileWriter同理。
InputStreamReader:字节流通向字符流
OutputStreamReader:字符流通向字节流
-
若不指定编码表,则为平台默认编码表。
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(); } }
-
加上缓冲
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:递归
递归比较占内存
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,请注明来意。