流:IO####
内存与设备之间传输数据的通道
分类:
宏观:
方向:输入、输出流;即内存与设备之间相互传输数据。
单位:字节、字符流;字节流可读所有数据,字符流可读文本数据。
功能:
节点:实际传输读写功能
过滤:节点流的增强
抽象类:
字节:
输入:InputStream
输出:OutputStream
字符:
输入:Reader
输出:Writer
实现类:
字节:
输入:FileInputStream
输出:FileOutStream
字符:
输入:FileReader
输出:FileWriter
过滤流(缓冲):
字节:
输入:BufferedInputStream
输出:BufferedOutputStream
字符:
输入:BufferedReader
输入:BufferedWriter、PrintWriter
对象:
输出:ObjectOutStream
输入:ObjectIntStream
方法:
字节:
read()
write()//参数内char或byte[] ;三参数为byte[]数组、从n起、每次写m个。
flush()//刷新、缓冲区转移设备中。
close()//程序结束前刷新全部缓冲区至设备
字符 :
readChar/Integer…(基本类型)//返回块数据
newLine()//换行
print()/println() //字符过滤流PrintWriter下使用,不换行/换行
桥转换法:
InputStreamRead/OutPutStreamWriter
字节流转字符流,可设置字符流编码格式
编码格式:
GBK:国标简体
UTF-8:Unicode字符集
编码:
String s = “XXX”;
byte[] bs = s.getBytes(“GBK/UTF-8”);
解码:
String str = new String(s,“GBK/UTF-8”);
注意:解码格式与转码相同
File类:
代表物理盘中一个文件或文件夹
方法:
isDirectory(); //判断是否为文件夹
isFile() //判断是否为文件
isHidden() //判断是否为隐藏文件
listFiles() //获得File对象数组
getName().endsWith(.doc/.txt/.class…) //判断文件类型
listFiles(new FileFileter实现类) //抽象类过滤器
作业:
1 、
BC
2 、
import java.io.File;
public class Homework2 {
public static void main(String[] args) {
File file = new File("Files\\hello.txt");
if(file.isFile()){
System.out.println(file.getAbsolutePath());
}
}
}
10、
FileWrite类将字符写入输出流
PrintWriter类增加了换行的功能
FileOutStream类可设置字符编码
11、
字节流
14、
import java.io.*;
public class Homework14 {
public static void main(String[] args) throws Exception {
InputStream fos1 = new FileInputStream("test.txt");
InputStreamReader isr = new InputStreamReader(fos1,"UTF-8");
BufferedReader br = new BufferedReader(isr);
OutputStream fos2 = new FileOutputStream("test2.txt");
OutputStreamWriter osw1 = new OutputStreamWriter(fos2,"UTF-8");
PrintWriter pw1 = new PrintWriter(fos2);
while(true) {
String s = br.readLine();
if(s == null) {
break;
}
pw1.println(s);
}
br.close();
pw1.close();
}
}
17、
import java.io.*;
import java.util.Scanner;
public class Homework17{
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("worldcup.txt");
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);
System.out.println("请输入一个年份:");
Scanner sc = new Scanner(System.in);
String str = sc.next();
while(true){
String s = br.readLine();
if(s.contains(str)){
char[] chr = s.toCharArray();
for(int i = s.indexOf("/") + 1 ; i < s.length(); i++){
System.out.print(chr[i]);
}
}else{
System.out.println("没有举办世界杯");
}
}
}
}
18、
public class Homework18 {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个路径:");
String str = scan.next();
File file=new File(str);
if(file.exists()) {
BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream(str),"GB2312"));
PrintWriter w=new PrintWriter(new OutputStreamWriter(new FileOutputStream("copy_"+str),"UTF-8"));
while(true) {
String str1=r.readLine();
if(str1==null) {
break;
}
w.println(s1);
}
w.close();
r.close();
}
}
````