1.掌握File类的使用。
2.掌握字节输入输出流类的使用,其中包括InputStream、OutputStream类,FileInputStream,FileOutputStream类,DataInputStream、DataOutputStream、BufferedInputStream、BufferedOutputStream和PrintStream类。
3.掌握字符输入输出流类的使用,其中包括FileReader、FileWriter、InputStreamReader、OutputStreamWriter、PrintWriter等类的使用。
4.掌握ObjectInputStream和ObjectOutputStrema类的使用。
一、InputStream、OutputStream类
InputStream类是字节输入流的根类,有多个子类。
OutputStream类是字节输出流的根类,有多个子类。
InputStream、OutputStream类可以读写二进制数据。
例:
package lx2;
import java.io.*;
import java.nio.file.*;
public class OutputInputDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Path path= Paths.get("src\\output.dat"); //声明一个路径
try(OutputStream output = Files.newOutputStream(path, StandardOpenOption.CREATE,StandardOpenOption.APPEND);//StandardOpenOption枚举 操作输入流
BufferedOutputStream buffered =new BufferedOutputStream(output)
){
for(int i=0;i<10;i++) {
int x=(int)(Math.random()*11)+10;
buffered.write(x);
}
}catch(IOException e) {
e.printStackTrace(); //处理e的异常信息
}
try(InputStream input =Files.newInputStream(path, StandardOpenOption.READ);
BufferedInputStream buffered =new BufferedInputStream(input)){//操作输入流对象
int c;
while ((c=buffered.read())!=-1) {
System.out.print(c +" ");
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
二、DataInputStream、DataOutputStream类
编写一个程序,随机生成100个1000到2000之间的整数,将它们写到一个文件out.dat中。写出数据要求使用DataOutputStream类的writeInt(int i)方法。
package lx2;
//编写一个程序,随机生成100个1000到2000之间的整数,将它们写到一个文件out.dat中。
//写出数据要求使用DataOutputStream类的writeInt(int i)方法。
import java.io.*;
public class NumberWrite{
public static void main(String args[]){
try{
FileOutputStream fos = new FileOutputStream("out.dat");
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
for(int i = 0;i<100;i++){
int num = (int)(Math.random()*1001)+1000;
System.out.println(num);
dos.writeInt(num);
}
dos.close();
bos.close();
fos.close();
}catch(IOException e){}
}
}
package lx2;
import java.io.*;
public class NumberRead{
public static void main(String args[]){
try{
FileInputStream fis = new FileInputStream("out.dat");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
int data[] = new int[100];
for(int i =0;i<100;i++){
data[i]=dis.readInt();
System.out.println(data[i]);
}
dis.close();
for(int i = data.length-1;i>=0;i--){
for(int j = 0;j<i;j++){
if(data[j]>data[j+1]){
int temp = data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
FileOutputStream fos = new FileOutputStream("out.dat");
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
for(int i = 0;i<data.length;i++){
dos.writeInt(data[i]);
}
dos.close();
bos.close();
fos.close();
}catch(IOException e){}
}
}