java学习第十六天
一、作业处理
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(" 文件路径",“编码集”));
上一篇: 用PHP连mysql和oracle数据库性能比较_PHP教程
下一篇: java第十六天