脚本宝典收集整理的这篇文章主要介绍了【209天】黑马程序员27天视频学习笔记【Day21-下】,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
叨逼叨两句
想做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,请注明来意。