Java文件字符流操作+装饰者模式简单实例

FileReader fr = new FileReader("xxx.txt");        //创建字符输入流
int c;    
while((c = fr.read()) != -1) {                //通过项目默认的码表一次读取一个字符
    System.out.print((char)c);            //与字节流类似
}




FileWriter fw = new FileWriter("yyy.txt");        //创建字符输出流
fw.write("大家好");                    //写入文件
fw.write("\r\n");
fw.write("hello world");

FileReader fr = new FileReader("xxx.txt");
FileWriter fw = new FileWriter("zzz.txt");            
int c;
while((c = fr.read()) != -1) {
    fw.write(c);
}            
fr.close();
fw.close();                //Writer类中有一个2k的小缓冲区,如果不关流,就会将内容写到缓冲区里,关流会将缓冲区内容刷新,再关闭




FileReader fr = new FileReader("双元.jpg");        //字符流不能拷贝纯文本的文件
FileWriter fw = new FileWriter("copy.jpg");        //不能这样写




FileReader fr = new FileReader("xxx.txt");
FileWriter fw = new FileWriter("yyy.txt");    
char[] arr = new char[1024];
int len;
while((len = fr.read(arr)) != -1) {                //将文件上的数据读取到字符数组中
    fw.write(arr,0,len);                    //将字符数组中的数据写到文件上
}





BufferedReader br = new BufferedReader(new FileReader("xxx.txt"));//使用缓冲区,读写效率更高
BufferedWriter bw = new BufferedWriter(new FileWriter("yyy.txt"));//与BufferedOutputStream类似    
int c;
while((c = br.read()) != -1) {
    bw.write(c);
}
bw.newLine();                              //写入换行符





LineNumberReader lnr = new LineNumberReader(new FileReader("zzz.txt"));    //用于记录行号            
String line;
lnr.setLineNumber(100);                    //设置行号起始值,默认为0
while((line = lnr.readLine()) != null) {        //读取每一行的字符串,行号不断加一,直到文件末尾
    System.out.println(lnr.getLineNumber() + ":" + line);//获取行号
}




装饰设计模式
interface Coder {
    public void code();
}
class Student implements Coder {
    public void code() {
        System.out.println("javase");
        System.out.println("javaweb");
    }
    
}
class HeiMaStudent implements Coder {
    //1,获取被装饰类的引用
    private Student s;                        //获取学生引用    
    //2,在构造方法中传入被装饰类的对象
    public HeiMaStudent(Student s) {
        this.s = s;
    }
    //3,对原有的功能进行升级
    public void code() {
        s.code();
        System.out.println("ssh");
        System.out.println("数据库");
        System.out.println("大数据");
        System.out.println("...");
    }
}
HeiMaStudent hms = new HeiMaStudent(new Student());
hms.code();





//打印出该文件夹下所有的.java文件名
public static void printJavaFile(File dir) {
    //1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中
    File[] subFiles = dir.listFiles();
    //2,遍历数组,对每一个文件或文件夹做判断
    for (File subFile : subFiles) {
        //3,如果是文件,并且后缀是.java的,就打印
        if(subFile.isFile() && subFile.getName().endsWith(".java")) {
            System.out.println(subFile);
        //4,如果是文件夹,就递归调用
        }else if (subFile.isDirectory()){
            printJavaFile(subFile);
        }
    }
}
发布了50 篇原创文章 · 获赞 7 · 访问量 4434

猜你喜欢

转载自blog.csdn.net/qq_37822034/article/details/82927857