欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java学习第十六天

程序员文章站 2024-01-20 09:50:16
...

一、作业处理

1.递归:
1.定义

package Test;
//和(x)=f(x-1)*x    x>1;
//f(1)=1;
public class Test6 {
    public static void main(String[] args) {
        int num=5;
        System.out.println(getNum(num));
    }
    private static int getNum(int x) {
        if(x>1){
            return x*getNum(x-1);  //x*getName(x-1)*getName(x-2).....*getName(1)
        }else{                          //x*(x-1)*(x-2)*........*1
            return 1;
        }
    }
}
//文件递归
package Test;
import java.io.File;
public class Test7 {
    public static void main(String[] args) {
        File f=new File("G:\\liu");
        getF(f);
    }

    private static void getF(File f) {
        if(f.isFile()){
            System.out.println("--"+f.getName());
            return;
        }
        System.out.println(f.getName());
        File[] list=f.listFiles();
        for (int i=0;i<list.length;i++){
            getF(list[i]);
        }
    }
}

二、io流

1.流的分类
1.按流的方向相对于内存:
InputStream/Reader
OutStream/Wrinter
2.按单位:
字节:InputStream/OutStream
字符:Reader/Wrinter
2.FileInputStream/OutputStream类:
1.常用方法:
read() 一个字节一个字节的读
read(byte[] b) 一次读取一个字节数组
read(byte[] buf , int off , int len) 从off开始读,len一次读多少字节,
2.FlieInputStream实现
1.按字节读取数据步骤
1.创建输入流对象:
FileInputStream f=new FileInputStream(" 文件路径");
2.读写数据
int data =f.read();
3.关闭io流
f.close();
2.按字节数组读取数据
1.创建输入流对象
FileInputStream f=new FileInputStream(" 文件路径");
2.读写数据
byte [ ] b=new byte[1024];
f.read(b);
String str=new String(b);//字节数组转化为字符串。
3.关闭流
3.按字节数组读,并设置偏移量。
1.创建输入流对象
FileInputStream f=new FileInputStream(" 文件路径");
2.读写数据
int len=0;
byte [ ] b=new byte[1024];
while(len=f.read(b,0,b.length)!=-1){
String str=new String(b,0,len);//字节数组转化为字符串。
sout(str)
}
3.关闭流
3.练习题:
1.读取一个英文的文本文件,并打印到控制台(分别按字节、按字节数组并制定偏移量)

//1.读取一个英文的文本文件,并打印到控制台(分别按字节、按字节数组并制定偏移量)
package Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class Test2 {
    public static void main(String[] args) throws IOException {
        File f=new File("G:/liu/liu.txt");
        FileInputStream fis=new FileInputStream(f);
/*        int data=0;
        while ((data=fis.read())!=-1){      //按字节打印到控制台
            System.out.print((char) data);
        }*/
        //按字节数组打印到控制台。
        int len=0;
        byte[] buf=new byte[20];
        while((len=fis.read(buf,0,buf.length))!=-1){
            String str=new String(buf,0,len);
            System.out.println(str);
        }
        fis.close();
    }
}
				2.将一个英文文件,显示到控制台,并拷贝到其他位置。
//2.将一个英文文件,显示到控制台,并拷贝到其他位置。
package Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test3 {
    public static void main(String[] args) throws IOException {
        File f=new File("G:/liu/liu.txt");
        FileInputStream fis=new FileInputStream(f);
        FileOutputStream fos=new FileOutputStream("G:/liu/liu1/liu1.txt");
        int data=0;
        while((data=fis.read())!=-1){
            fos.write(data);
            System.out.print((char) data);;
        }
        fis.close();
        fos.close();
    }
}

4.FileOutputStream类:
1.编码集:
ASCII码
ISO8859-1欧洲国家
GBK/GB2112中文
Unicode:万国码。 一个字符占两个字节。java默认编码集
utf-8:万国码增强版。
ANSI,系统默认编码集
2.常用方法
write(int byte)
write()
write()
getBytes(字符编码)
5、字符流:
概述:只用于字符型文件,只用于文本文件。如日志,txt文档等。
1.抽象类,
字符输入流:Reader
字符输出流:Writer
2.FileReader/FileWriter
3.BufferReader/BufferWriter
6.转换流InputStreamReader/OutputStreamWriter:
1.读取文件时指定编码集。
2.创建转换流对象:
InputStreamReader isr =new InputStreamReader(new FileInputStream(" 文件路径",“编码集”));
java学习第十六天
java学习第十六天

相关标签: java输入输出流