java学习之路 之 IO流-练习题

来源:互联网 发布:废旧金属行情软件 编辑:程序博客网 时间:2024/05/02 08:01
package com.atguigu.javae.io;import java.io.FileReader;import java.io.IOException;import org.junit.Test;public class IOTest {@Testpublic void testReader() {// 1) 声明流对象引用,并赋值为null;FileReader fReader = null;// 2) try catch finallytry {// 5) 创建流对象, 建立通道fReader = new FileReader("一个文本文件"); // 尝试从当前目录下开始找这个文件// 6) 通过流对象,处理数据int ch = fReader.read();while (ch != -1) {// 1) 处理已经读到的数据System.out.print((char)ch); // 如果包含换行, 也能正确处理// 2) 继续读后面的数据, 直到-1为止ch = fReader.read();}} catch (Exception e) {// 4) 处理异常e.printStackTrace();} finally {// 3) 关闭流对象if (fReader != null) {try {fReader.close();} catch (IOException e) {e.printStackTrace();}}}}}class FileCopy {// 使用文件流完成文件的复制,每一次读取一个字节@Testpublic void test() {FileReader fr = null;FileWriter fw = null;try {fr = new FileReader("./src/com/atguigu/javase/io/Filecopy.java");fw = new FileWriter("Filecopy.java.bak");int ch = fr.read();while (ch != -1) {fw.write(ch);ch = fr.read();}} catch (Exception e) {e.printStackTrace();} finally {if (fr != null) {try {fr.close();} catch (Exception e2) {}}if (fw != null) {try {fw.close();} catch (Exception e2) {}}}}}class IOTest {// 使用问件输入流 读取文件内容,并给没行前加上行号,然后在控制台打印输出,public static void main(String[] args) {FileReader fr = null;try {fr = new FileReader("./src/com/atguigu/javase/io/IOTest.java");char[] buf = new char[100]; int ch = fr.read(buf);System.out.println(buf);int count = 1;System.out.print(count++ + " ");while (ch != -1) {for (int i = 0; i < ch; i++) {System.out.print(buf[i]);if (buf[i] == '\n') {System.out.print(count++ + " ");} }ch = fr.read(buf);}} catch (Exception e) {e.printStackTrace();} finally {if (fr != null) {try {fr.close();} catch (Exception e2) {}}}}}class TestCopy {public static void main(String[] args) {FileReader fReader = null;FileWriter fWriter = null;// 使用文件流完成文件的复制,每一次读取100个字节try {fReader = new FileReader("./src/com/atguigu/javase/io/TestCopy.java");fWriter = new FileWriter("TestCopy.java.bak");char[] buf = new char[100];int realCount = fReader.read(buf);while(realCount != -1) {fWriter.write(buf, 0, realCount);realCount = fReader.read(buf);}} catch (Exception e) {e.printStackTrace();} finally {if (fReader != null) {try {fReader.close();} catch (Exception e2) {}}if (fWriter != null) {try {fWriter.close();} catch (Exception e) {}}}}}class TestFileCopy2 {// 使用缓冲流完成文件的复制public static void main(String[] args) {FileReader fReader = null;BufferedReader bReader = null;FileWriter fWriter = null;BufferedWriter bWriter = null;try {fReader = new FileReader("./src/com/atguigu/javase/io/TestCopy.java");bReader = new BufferedReader(fReader);fWriter = new FileWriter("TestFileCopy2.java.bak2");bWriter = new BufferedWriter(fWriter);String line = bReader.readLine();while (line != null) {bWriter.write(line);bWriter.newLine();line = bReader.readLine();}} catch (Exception e) {e.printStackTrace();} finally {if (bReader != null) {try {bReader.close();} catch (Exception e2) {}}if (bWriter != null) {try {bWriter.close();} catch (Exception e2) {// TODO: handle exception}}}}}package com.atguigu.javase.io;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Set;import java.util.TreeSet;import org.junit.Test;public class Work {@Testpublic void work6() {//把xmlstudy文件中的内容的重复的行去掉, 并对行进行从小到大排序后 写入新文件xmlstudy2中, 验证文件中有没有去掉空行,并且排序FileReader fileReader = null;BufferedReader bufferedReader = null;FileWriter fileWriter = null;BufferedWriter bufferedWriter = null;try {fileReader = new FileReader(new File("xmlstudy"));bufferedReader = new BufferedReader(fileReader);fileWriter = new FileWriter(new File("xmlstudy2"));bufferedWriter = new BufferedWriter(fileWriter);Set<String> set = new TreeSet<String>();String line = null;while ((line = bufferedReader.readLine()) != null) {set.add(line);}for (String string : set) {bufferedWriter.write(string);bufferedWriter.newLine();}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {bufferedReader.close();} catch (Exception e2) {// TODO: handle exception}try {bufferedWriter.close();} catch (Exception e2) {// TODO: handle exception}}}@Testpublic void work1() {// 使用Object输入输出流,写入50个100以内的随机整数, 再读出来打印输出FileOutputStream fos = null;BufferedOutputStream bos = null;ObjectOutputStream oos = null;try {fos = new FileOutputStream("50个随机数");bos = new BufferedOutputStream(fos);oos = new ObjectOutputStream(bos);for (int i = 0; i < 50; i++) {oos.writeInt((int)(Math.random() * 100));}} catch (Exception e) {e.printStackTrace();} finally {try {oos.close();} catch (Exception e2) {}}}@Testpublic void work2() {FileInputStream fis = null;BufferedInputStream bis = null;ObjectInputStream ois = null;try {fis = new FileInputStream("50个随机数");bis = new BufferedInputStream(fis);ois = new ObjectInputStream(bis);for (int i = 0; i < 50; i++) {System.out.println(ois.readInt());}} catch (Exception e) {e.printStackTrace();} finally {try {ois.close();} catch (Exception e2) {}}}//扩展 写入随机个100以内的随机整数, 再全部读出来打印输出@Testpublic void work3() {// 使用Object输入输出流,写入50个100以内的随机整数, 再读出来打印输出FileOutputStream fos = null;BufferedOutputStream bos = null;ObjectOutputStream oos = null;try {fos = new FileOutputStream("随机个随机数");bos = new BufferedOutputStream(fos);oos = new ObjectOutputStream(bos);int rand = (int)(Math.random() * 50);oos.writeInt(rand);for (int i = 0; i < rand; i++) {oos.writeInt((int)(Math.random() * 100));}} catch (Exception e) {e.printStackTrace();} finally {try {oos.close();} catch (Exception e2) {}}}@Testpublic void work4() {FileInputStream fis = null;BufferedInputStream bis = null;ObjectInputStream ois = null;try {fis = new FileInputStream("随机个随机数");bis = new BufferedInputStream(fis);ois = new ObjectInputStream(bis);int count = ois.readInt();for (int i = 0; i < count; i++) {System.out.println(ois.readInt());}} catch (Exception e) {e.printStackTrace();} finally {try {ois.close();} catch (Exception e2) {}}}}package com.atgiugu.javase.io;import java.io.FileReader;import java.io.FileWriter;public class FileCopy {public static void main(String[] args) {// 把FileCopy.java复制成FileCopy.java.bakFileReader fReader = null;FileWriter fWriter = null;try {fReader = new FileReader("./src/com/atgiugu/javase/io/FileCopy.java");fWriter = new FileWriter("FileCopy.java.bak");int ch = fReader.read();while (ch != -1) {// 1) 处理已经读到的数据fWriter.write(ch);// 2) 继续读后面的数据,直到-1ch = fReader.read();}} catch (Exception e) {e.printStackTrace();} finally {if (fReader != null) {try {fReader.close();} catch (Exception e2) {}}if (fWriter != null) {try {fWriter.close();} catch (Exception e2) {}}}}}package com.atgiugu.javase.io;import java.io.FileReader;import java.io.FileWriter;public class TextFileCopy {public static void main(String[] args) {//编写程序TextFileCopy.java,在测试方法中,将TextFileCopy.java复制为TextFileCopy.java.bak文件;FileReader fReader = null;FileWriter fWriter = null;try {//fReader = new FileReader("真的爱你.mp3"); 不可以处理二进制文件//fWriter = new FileWriter("真的不爱你.mp3");fReader = new FileReader("TextFileCopy.java");fWriter = new FileWriter("TextFileCopy.java.bak");char[] buf = new char[100];int realCount = fReader.read(buf);while (realCount != -1) {// 1) 处理已经读到的数据fWriter.write(buf, 0, realCount);// 2) 继续读后面的数据realCount = fReader.read(buf);}} catch (Exception e) {e.printStackTrace();} finally {if (fReader != null) {try {fReader.close();} catch (Exception e2) {}}if (fWriter != null) {try {fWriter.close();} catch (Exception e2) {}}}}}package com.atguigu.javase.work;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeSet;import org.junit.Test;public class HomeWork {//请把学生名与考试分数录入到Map中,并按分数显示前三名成绩学员的名字。@Testpublic void work1() {Map<String, Integer> map = new HashMap<String, Integer>();map.put("小明", 80);map.put("小花", 70);map.put("小丽", 60);map.put("小强", 100);map.put("小伟", 99);map.put("小刚1", 100);map.put("小刚2", 100);map.put("小刚3", 100);map.put("小刚4", 100);map.put("小刚5", 100);Set<String> nameSet = map.keySet();String[] nameArr = nameSet.toArray(new String[0]);for (int i = 0; i < nameArr.length - 1; i++) {for (int j = 0; j < nameArr.length - 1 - i; j++) {if (map.get(nameArr[j]) > map.get(nameArr[j + 1])) {String tmp = nameArr[j];nameArr[j] = nameArr[j + 1];nameArr[j + 1] = tmp;}}}Set<Integer> high3 = new TreeSet<Integer>();for (int i = nameArr.length - 1; i >= 0 ; i--) {if (high3.size() == 3) {break;}high3.add(map.get(nameArr[i]));}List<Integer> high3List = new ArrayList<Integer>();high3List.addAll(high3);int no1count = 0;int no2count = 0;for (int i = nameArr.length - 1; i >= 0 ; i--) {if (map.get(nameArr[i]) == high3List.get(2)) {System.out.println(nameArr[i] + " : " + high3List.get(2));no1count++; // 最高分个数++} else if (map.get(nameArr[i]) == high3List.get(1)) {if (no1count >= 3) { // 如果是最高分个数已经大于3 中断第二高分的同学的打印break;}System.out.println(nameArr[i] + " : " + high3List.get(1));no2count++; // 第二高分计数} else if (map.get(nameArr[i]) == high3List.get(0)) {if (no1count + no2count >= 3) {break;}System.out.println(nameArr[i] + " : " + high3List.get(0));}}//System.out.println(nameArr[nameArr.length - 1] + " : " + map.get(nameArr[nameArr.length - 1]));//System.out.println(nameArr[nameArr.length - 2] + " : " + map.get(nameArr[nameArr.length - 2]));//System.out.println(nameArr[nameArr.length - 3] + " : " + map.get(nameArr[nameArr.length - 3]));}@Testpublic void work2() {Map<String, Integer> map = new HashMap<String, Integer>();map.put("小明", 80);map.put("小花", 70);map.put("小丽", 60);map.put("小强", 100);map.put("小伟", 99); // 99小伟map.put("小刚", 100);// 100小刚List<String> list = new ArrayList<String>();Set<String> name = map.keySet();for (String n : name) {int score = map.get(n);list.add((char)score + n);}Collections.sort(list);Collections.reverse(list);System.out.println((int)list.get(0).charAt(0) + " : " + list.get(0).substring(1));System.out.println((int)list.get(1).charAt(0) + " : " + list.get(1).substring(1));System.out.println((int)list.get(2).charAt(0) + " : " + list.get(2).substring(1));}}package com.guigu.javase.Object;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStreamWriter;import java.io.RandomAccessFile;import java.io.Serializable;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.junit.Test;@SuppressWarnings("serial")class Student implements Serializable{private int id;private String name;private double score;public Student() {}public Student(int id, String name, double score) {super();this.id = id;this.name = name;this.score = score;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", score=" + score+ "]";}}public class IOTest {// 使用对象流将,存有3个学生对象的Set集合对象,写如文件“对象序列化文件”@Testpublic void test1() {FileOutputStream fos = null;ObjectOutputStream oos = null;try {fos = new FileOutputStream("对象序列化文件");oos = new ObjectOutputStream(fos);Student s1 = new Student(1, "小明", 90);Student s2 = new Student(2, "小红", 89);Student s3 = new Student(3, "小丽", 98);Set<Student> set = new HashSet<Student>();set.add(s1);set.add(s2);set.add(s3);oos.writeObject(set);} catch (Exception e) {e.printStackTrace();} finally {try {oos.close();} catch (Exception e2) {}}}// 将上述文件内的对象读取出来并在控制台打印输出@Testpublic void test2() {FileInputStream fis = null;ObjectInputStream ois = null;try {fis = new FileInputStream("对象序列化文件");ois = new ObjectInputStream(fis);@SuppressWarnings("unchecked")Set<Student> set = (Set<Student>)ois.readObject(); Iterator<Student> iterator = set.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {ois.close();} catch (Exception e2) {// TODO: handle exception}}}// 使用转换流将几个字符串以UTF8编码写入“转换流写文件”文件中@Testpublic void test3() {FileOutputStream fis = null;OutputStreamWriter osw = null;try {fis = new FileOutputStream("转换流写文件");osw = new OutputStreamWriter(fis,"UTF8");osw.write("abdcssd\n");osw.write("你管我写什么?");osw.write(10);osw.write("哈哈哈!!");} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {osw.close();} catch (Exception e2) {}}}// 使用转换流将“转换流写文件”中的字符串按照UTF8格式读出来并在控制台上打印输出@Testpublic void test4() {FileInputStream fis = null;InputStreamReader isr = null;try {fis = new FileInputStream("转换流写文件");isr = new InputStreamReader(fis,"UTF8");int count = isr.read();while (count != -1) {System.out.print((char)count);count = isr.read();}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {isr.close();} catch (Exception e2) {// TODO: handle exception}}}获取键盘输入的字符串,并在控制台打印输出,若不是数字则提示@Testpublic void test5() {InputStreamReader isr = null;BufferedReader brReader = null;FileWriter fw = null;BufferedWriter brWriter = null;try {isr = new InputStreamReader(System.in); //转换流获取键盘输入的字符串brReader = new BufferedReader(isr); // 缓冲流fw = new FileWriter("nums.txt");  // 文件输出流brWriter = new BufferedWriter(fw); // 缓冲流for (int i = 0; i < 10;i++) {String num = brReader.readLine();try {Double.parseDouble(num);brWriter.write(num);brWriter.newLine();} catch (NumberFormatException e) {System.out.println("输入数字错误!!");i--;}}} catch (Exception e) {e.printStackTrace();} finally {try {brReader.close();} catch (Exception e2) {}try {brWriter.close();} catch (Exception e2) {}}}// 随机访问文件类练习@Testpublic void test6() {RandomAccessFile raf = null;try {raf = new RandomAccessFile("随机访问文件", "rw");for (int i = 0; i < 26; i++) {raf.write('a' + i);}raf.seek(0);for (int i = 0; i < 10; i++) {raf.write('A' + i);}raf.seek(raf.length() - 10);for (int i = 0; i < 10; i++) {raf.write('0' + i);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {raf.close();} catch (Exception e2) {}}}// File类的练习@Testpublic void test7() {File file = new File(".");File file1 = new File("xxx");String[] childFileName = file.list();for (int i = 0; i < childFileName.length; i++) {System.out.println(childFileName[i]);}file1.mkdir();File file2 = new File("xxx/file.info");FileWriter fWriter = null;try {fWriter = new FileWriter(file2);File[] childFiles = file.listFiles();for (int i = 0; i < childFiles.length; i++) {fWriter.write(childFiles[i].getName() + ",");;fWriter.write(childFiles[i].length() + "\n");;System.out.print(childFiles[i].getAbsolutePath());System.out.println(childFiles[i].length());}} catch (Exception e) {// TODO: handle exception} finally {try {fWriter.close();} catch (Exception e2) {// TODO: handle exception}}}}package com.atguigu.javase.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStreamWriter;import java.io.PrintStream;import java.io.RandomAccessFile;import java.io.Serializable;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.junit.Test;class Person implements Serializable {private static final long serialVersionUID = -402328197027L;public static int no = 100; // 静态属性不可以被序列化private String name;private transient int age; // transient是短暂的,瞬时的. 这个属性也不能被序列化private String gender;//private double weight;public Person() {}public Person(String name, int age, String gender) {super();this.name = name;this.age = age;this.gender = gender;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender+ "]";}}/** * 写一个Student类 ,包含属性 id, name, score * 序列化一个包含3个对象的数组, 再序列化一个包含4个对象的List集合 * 再反序列化,打印输出 */public class IOTest {@Testpublic void exer5() {// 创建目录xxxFile file = new File("xxx");file.mkdir();// 列出当前目录下的所有子文件和子目录, 把文件的文件名和文件长度信息写入文件xxx/file.info中File currentDir = new File(".");File[] childFiles = currentDir.listFiles();FileWriter fileWriter = null;try {fileWriter = new FileWriter("xxx/file.info");for (int i = 0; i < childFiles.length; i++) {System.out.println(childFiles[i]);fileWriter.write(childFiles[i].getName() + "," + childFiles[i].length());fileWriter.write(10);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {fileWriter.close();} catch (Exception e2) {// TODO: handle exception}}}@Testpublic void testFile2() throws IOException {File file = new File("abc");System.out.println("file.mkdir():" + file.mkdir());System.out.println("file.canRead():" + file.canRead());System.out.println("file.getAbsolutePath():" + file.getAbsolutePath());System.out.println("file.getFreeSpace():" + file.getFreeSpace());System.out.println("file.getTotalSpace():" + file.getTotalSpace());System.out.println("file.lastModified():" + file.lastModified());System.out.println("file.length():" + file.length());System.out.println("file.canWrite():" + file.canWrite());System.out.println("file.createNewFile():" + file.createNewFile());System.out.println("file.exists():" + file.exists());System.out.println("file.isDirectory():" + file.isDirectory());System.out.println("file.isFile():" + file.isFile());// 目录特有的方法System.out.println("------------------------");String[] childFileNames = file.list();for (int i = 0; i < childFileNames.length; i++) {System.out.println(childFileNames[i]);}System.out.println("------------------------");// 重点方法File[] childFiles = file.listFiles();for (int i = 0; i < childFiles.length; i++) {System.out.println(childFiles[i].length() + " " + childFiles[i].getAbsolutePath());}}@Testpublic void testFile() throws IOException {File file = new File("nums.txt");System.out.println("file.canRead():" + file.canRead());System.out.println("file.getAbsolutePath():" + file.getAbsolutePath());System.out.println("file.getFreeSpace():" + file.getFreeSpace());System.out.println("file.getTotalSpace():" + file.getTotalSpace());System.out.println("file.lastModified():" + file.lastModified());System.out.println("file.length():" + file.length());System.out.println("file.canWrite():" + file.canWrite());System.out.println("file.createNewFile():" + file.createNewFile());System.out.println("file.exists():" + file.exists());System.out.println("file.isDirectory():" + file.isDirectory());System.out.println("file.isFile():" + file.isFile());//System.out.println("file.delete():" + file.delete());}// 写一个文件, 写入26个小写字母@Testpublic void exer3() {RandomAccessFile raf = null;try {raf = new RandomAccessFile("随机文件2", "rw");for (int i = 0; i < 26; i++) {raf.write('a' + i); // 0x00000061}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {raf.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// 再打开这个文件, 把前10个换成大写字母,后10个替换为数字字符@Testpublic void exer4() {RandomAccessFile raf = null;try {raf = new RandomAccessFile("随机文件2", "rw");//abcdefghijklmn...xyzraf.seek(0);for (int i = 0; i < 10; i++) {raf.write('A' + i);}raf.seek(raf.length() - 10);for (int i = 0; i < 10; i++) {raf.write('0' + i);}//raf.setLength(1024 * 1024 * 1024);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {raf.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}@Testpublic void testRandomAccessFile() {RandomAccessFile raf = null;try {raf = new RandomAccessFile("随机访问文件", "rw"); // 以读写方式打开文件, 指针指向0下标处char ch = (char)raf.read(); // 读一个字节, 一个字节正好是一个英语字符, 指针要作相应的移动System.out.println(ch);//raf.readChar();System.out.println("pointer:" + raf.getFilePointer());raf.seek(4);byte[] buf = new byte[8192];int realCount = raf.read(buf, 0, 4); // 只读4个字节String string = new String(buf, 0, realCount);System.out.println(string);raf.seek(20);realCount = raf.read(buf, 0, 3); // 只读3个字节String string2 = new String(buf, 0, realCount);System.out.println(string2);raf.seek(8);raf.writeUTF("XXXX");//raf.write('a'); 把一个字符当作字节写入文件// 打开文件,确认内容} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {raf.close();} catch (Exception e2) {// TODO: handle exception}}}@Testpublic void testSystemOut2() throws FileNotFoundException {System.out.println("aaaaa");System.err.println("bbbbb"); // System.err对象中的方法是在另外一个线程中运行}@Testpublic void testSystemOut() throws FileNotFoundException {//System.setOut(new PrintStream(new FileOutputStream("sysout"))); // 输入输出重定向//System.out.println("abcdefg");System.setErr(new PrintStream(new FileOutputStream("syserr"))); //把错误输出重定向到文件System.err.println("xxxxxxxxx");try {String string = null;System.out.println(string.length());} catch (Exception e) {e.printStackTrace();}}// 从键盘获取10组数字, 把这10个数字保存在文件nums.txt中.@Testpublic void exer1() {// 如果获取到的输入不是数字,则不允许写入文件.InputStreamReader isr = null;BufferedReader bufferedReader = null;FileWriter fileWriter = null;BufferedWriter bufWriter = null;try {isr = new InputStreamReader(System.in);bufferedReader = new BufferedReader(isr);fileWriter = new FileWriter("nums.txt", true); // 以追加的方式写文件bufWriter = new BufferedWriter(fileWriter);for (int i = 0; i < 10; i++) {String str = bufferedReader.readLine();try {Double.parseDouble(str);bufWriter.write(str);bufWriter.newLine();} catch (NumberFormatException e) {System.out.println("输入的数字有误!!");i--;}}} catch (Exception e) {e.printStackTrace();} finally {try {bufferedReader.close();} catch (Exception e2) {// TODO: handle exception}try {bufWriter.close();} catch (Exception e2) {// TODO: handle exception}}}// 使用转换流获取键盘输入的字符串并在控制台打印输出@Testpublic void testSystemIn() {//System.out.println(System.in);InputStreamReader isr = null;BufferedReader bufReader = null;try {isr = new InputStreamReader(System.in); // System.in是一个常量对象, 由JVM自动创建, 我们只需要拿来使用即可bufReader = new BufferedReader(isr);String line = bufReader.readLine();while (line != null) {// 1)System.out.println(line);// 2) line = bufReader.readLine(); // ctrl+z会使得返回null}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {bufReader.close();} catch (Exception e2) {// TODO: handle exception}}}@Testpublic void testOutputStreamWriter() {FileOutputStream fos = null;OutputStreamWriter osw = null;try {fos = new FileOutputStream("使用转换流写文本文件3", true);//osw = new OutputStreamWriter(fos); // 以本地编码方式写文本文件osw = new OutputStreamWriter(fos, "UTF8"); // 以指定编码方式写文本文件osw.write("来一个字符串");osw.write(10);osw.write("abcdefgh\n");} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {osw.close();} catch (Exception e2) {// TODO: handle exception}}}// 写一个文本文件,使用UTF8编码方式, 用记事本打开查看内容// 再读取文件内容并打印输出// 试一下使用ISO8859-1编码方式,写文件并读文件@Testpublic void testInputStreamReader() {//FileReader fReader = null;FileInputStream fis = null;InputStreamReader isr = null;BufferedReader bufReader = null;try {//fReader = new FileReader("utf8编码的文本文件.txt"); // 只能使用默认的GBK方式读文本文件fis = new FileInputStream("使用转换流写文本文件2");//isr = new InputStreamReader(fis); // 默认按照GBK方式把字节流转换为字符流isr = new InputStreamReader(fis, "UTF8"); // 以UTF8编码方式把字节流转化为字符流bufReader = new BufferedReader(isr);String line = bufReader.readLine(); // 直接从流中读一行字符串, line中不包含任何换行while (line != null) {// 1) 处理数据System.out.println(line);// 2) 继续读line = bufReader.readLine();}} catch (Exception e) {e.printStackTrace();} finally {// 关闭流, 只需要关闭高级流即可if (bufReader != null) {try {bufReader.close();} catch (Exception e2) {}}}}// 处理对象, 对象序列化 : 把在GC区中对象的相关数据保存到输出流中.// 可以直接序列化类实现了Seriliable接口的对象, 还可以序列化对象数组, 对象集合// 序列化和序列化时类的版本要求一致.@Testpublic void testSerialize() {FileOutputStream fos = null;ObjectOutputStream oos = null;try {fos = new FileOutputStream("对象序列化文件");oos = new ObjectOutputStream(fos);// 对象序列化Person.no = 1000;Person obj1 = new Person("张三", 30 , "男");Person obj2 = new Person("李四", 40 , "女");Person obj3 = new Person("王五", 50 , "男");Person[] arr = {obj1, obj2, obj3};/*oos.writeObject(obj1);oos.writeObject(obj2);oos.writeObject(obj3);*///oos.writeObject(arr);Set<Person> set = new HashSet<Person>();set.add(obj1);set.add(obj2);set.add(obj3);oos.writeObject(set);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {oos.close();} catch (Exception e2) {// TODO: handle exception}}}// 对象反序列化 : 把输入流中二进制数据还原成对象的过程@Testpublic void testDeSerialize() {FileInputStream fis = null;ObjectInputStream ois = null;try {fis = new FileInputStream("对象序列化文件");ois = new ObjectInputStream(fis);/*Person person1 = (Person)ois.readObject();System.out.println(person1);Person person2 = (Person)ois.readObject();System.out.println(person2);Person person3 = (Person)ois.readObject();System.out.println(person3);*//*Person[] arr = (Person[])ois.readObject();for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}*/Set<Person> set = (Set<Person>)ois.readObject();Iterator<Person> iterator= set.iterator();while (iterator.hasNext()) {Person person = iterator.next();System.out.println(person);}System.out.println(Person.no);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {try {ois.close();} catch (Exception e2) {// TODO: handle exception}}}}package com.atguigu.javase.work;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;import org.junit.Test;// 从键盘读取一个字符串,判断是整数,还是浮点数,或者是字符串,然后在控制台上打印输出public class HomeWork {@Testpublic void test3() {Scanner scanner = null;try {scanner = new Scanner(System.in);/*while (scanner.hasNextLine()) {String string = scanner.nextLine();System.out.println(string);}*/// aaa 111 222.3 bbb ccc 999while (scanner.hasNext()) {if (scanner.hasNextInt()) {int num = scanner.nextInt();System.out.println("整数:" + num);} else if (scanner.hasNextDouble()) {double value = scanner.nextDouble();System.out.println("浮点数:" + value);} else {String string = scanner.next();System.out.println("普通字符串:" + string);}}} catch (Exception e) {e.printStackTrace();} finally {scanner.close();}}// 从键盘读取字符串并在控制太打印输出@Testpublic void test2() throws IOException {BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));String line = bufferedReader.readLine();while (line != null) {System.out.println(line);line = bufferedReader.readLine();}bufferedReader.close(); // 键盘流一旦关闭,就无法再使用}@Testpublic void work1() {String path = "c:/MyWork";File file = new File(path);deleteFile(file);}// 删除文件夹及其子目录及子文件夹public void deleteFile(File file) {if (file.isFile()) {file.delete();} else {File[] childFiles = file.listFiles();for (int j = 0; j < childFiles.length; j++) {deleteFile(childFiles[j]);}file.delete();System.out.println(file + " 目录删除成功!");}}}

2 0