示例代码:
字节流:处理字节的输入和输出:InputStream 和OutputStream顶端的两个抽象类
- //读取控制台输入
- import java.io.*; //导入java,io包
- class ReadBytes{
- public static void main(String[] args)throws IOException{
- byte[] data =new byte[10];
- System.out.println("Enter some characters.");
- System.in.read(data); //从键盘读取一个字节数组
- System.out.println("you entered: ");
- for(int i=0;i<data.length;i++){
- System.out.print((char)data[i]+"\t");
- }
- }
- }
- ---------------------------------------------------------------------------------------
- //写入控制台输出
- class WriteDemo{
- public static void main(String[] args){
- int b;
- b='X';
- System.out.write(b); //向控制台写入一个字节
- System.out.write('\n');
- }
- }
- -----------------------------------------------------------------
- 从文件读取
- import java.io.*; //导入io包
- class ShowFile{
- public static void main(String[] args){
- int i;
- FileInputStream fin=null; //使用FileInputStream对象读取文件
- if(args.length!=1){
- System.out.println("Usage:ShowFile File");
- return;
- }
- try{ //正常方法
- fin=new FileInputStream(args[0]); //打开文件
- do{
- i=fin.read(); //读取字节,文件结尾返回-1
- if(i!=-1) System.out.print((char)i);
- }while(i!=-1);
- }catch(FileNotFoundException e){
- System.out.println("File Not Found.");
- }catch(IOException e){
- System.out.println("AN I/O Error.");
- }finally{ //finally确保文件关闭
- try{
- if(fin!=null){
- fin.close(); //关闭文件
- }
- }catch(IOException e){
- System.out.println("Error Closing File");
- }
- }
- -------------------------------------------------------------------------------
- try-with-resources自动资源管理 自动关闭文件
- try(FileInputStream fin=new FileInputStream(args[0])){
- do{
- i=fin.read();
- if(i!=-1) System.out.print((char)i);
- }while(i!=-1);
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
- -----------------------------------------------------------------
- 写入文件
- import java.io.*; //导入IO包
- class CopyFile{
- public static void main(String[] args){
- int i;
- FileInputStream fin=null; //使用FileInputStream对象从文件读取
- FileOutputStream fout=null; //使用FileOutputStream对象写入文件
- if(args.length!=2){
- System.out.println("Usage: CopyFile from to");
- return;
- }
- try{
- fin=new FileInputStream(args[0]); //要读取的文件名
- fout=new FileOutputStream(args[1]);//要写入文件名
- do{
- i=fin.read(); //读取字节
- if(i!=-1) fout.write(i); //写入字节
- }while(i!=-1);
- }catch(IOException e){
- System.out.println("I/O Error:"+e);
- }finally{ //finally确保关闭文件
- try{
- if(fin!=null){
- fin.close(); //关闭文件
- }
- }catch(IOException e){
- System.out.println("InputFile Closing Error");
- }
- try{
- if(fout!=null){
- fout.close(); //关闭文件
- }
- }catch(IOException e){
- System.out.println("OutputFile Closing Error");
- }
- }
- -----------------------------------------------------------------------------
- try-with-resources自动资源管理 自动关闭文件
- try(FileInputStream fin=new FileInputStream(args[0]);
- FileOutputStream fout=new FileOutputStream(args[1])){
- do{
- i=fin.read();
- if(i!=-1) fout.write(i);
- }while(i!=-1);
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
- --------------------------------------------------------------------------------------
- 读写二进制数据
- import java.io.*; //导入io包
- class RWData{
- public static void main(String[] args){
- int i=10;
- double d=1023.56;
- boolean b=true;
- //try-with-resources自动资源管理
- try(DataOutputStream dataOut=new DataOutputStream(new FileOutputStream("testdata"))){
- System.out.println("Writing "+i);
- dataOut.writeInt(i); //DataOutputStream对象写入二进制数据到文件testdata
- System.out.println("Writing "+d);
- dataOut.writeDouble(d); //DataOutputStream对象写入二进制数据到文件testdata
- System.out.println("Writing "+b);
- dataOut.writeBoolean(b); //DataOutputStream对象写入二进制数据到文件testdata
- }catch(IOException e){
- System.out.println(e);
- return;
- }
- System.out.println();
- //try-with-resources自动资源管理
- try(DataInputStream dataIn=new DataInputStream(new FileInputStream("testdata"))){
- i=dataIn.readInt(); //DataInputStream对象从文件读取二进制数据
- System.out.println("Reading "+i);
- d=dataIn.readDouble(); //DataInputStream对象从文件读取二进制数据
- System.out.println("reading "+d);
- b=dataIn.readBoolean(); //DataInputStream对象从文件读取二进制数据
- System.out.println("reading "+b);
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
- ---------------------------------------------------------------------------------
- 随机访问文件:
- import java.io.*; //导入java.IO包
- class RandomAccessDemo{
- public static void main(String[] args){
- double[] data={19.4,10.1,123.54,33.0,87.9,74.25};
- double d;
- //try-with-resources自动资源管理
- try(RandomAccessFile raf=new RandomAccessFile("random.dat","rw")){ //rw支持读写
- for(int i=0;i<data.length;i++){
- raf.writeDouble(data[i]); //RandomAccessFile 实现了DataInput,DataOutput,支持定位请求
- }
- raf.seek(0); //读取第一个 seek()定位
- d=raf.readDouble();
- System.out.println(d);
- raf.seek(8); //读取第二个
- d=raf.readDouble();
- System.out.println(d);
- raf.seek(8*3); //读取第四个
- d=raf.readDouble();
- System.out.println(d);
- System.out.println();
- System.out.println("Read all values:");
- for(int i=0;i<data.length;i++){
- raf.seek(8*i); //读取全部数据
- d=raf.readDouble();
- System.out.print(d+"\t");
- }
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
字符流:处理字符的输入和输出,使用Unicode,比字节流效率高,Reader和Writer顶端两个抽象类
- //读取控制台输入
- import java.io.*;
- class ReadChars{
- public static void main(String[] args)throws IOException{
- char c;
- String str;
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//BufferedReader对象读取字符
- System.out.println("Enter characters,period to quit.");
- do{
- c=(char)br.read(); //读取字符
- System.out.println(c);
- str=br.readLine(); //读取字符串
System.out.println(str); - }while(c!='.');
- }
- }
- -------------------------------------------------------------------------------
- //写入控制台输出
- import java.io.*;
- class PrintWriterDemo{
- public static void main(String[] args){
- int i=10;
- double d=123.65;
- PrintWriter pw=new PrintWriter(System.out,true);//PrintWriter对象写入到控制台
- pw.println("Using a PrintWriter.");
- pw.println(i);
- pw.println(d);
- }
- }
- ----------------------------------------------------------------------------------------
- 写入数据到文件:FileWriter
- import java.io.*;
- class KtoD{
- public static void main(String[] args){
- String str;
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//BufferedReader对象读取数据
- System.out.println("Enter text('stop' to quit).");
- try(FileWriter fw=new FileWriter("text.txt")){ //FileWriter对象写入到文件
- do{
- str=br.readLine();
- if(str.compareTo("stop")==0) break;
- str=str+"\r\n";
- fw.write(str);
- }while(str.compareTo("stop")!=0);
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
- ----------------------------------------------------------------------------------------
- 从文件读取:FileReader
- import java.io.*;
- class DtoS{
- public static void main(String[] args){
- String s;
- try(BufferedReader br=new BufferedReader(new FileReader("text.txt"))){//BufferedReader读取数据
- while((s=br.readLine())!=null){ //FileReader对象读取文件数据
- System.out.println(s); //输出到控制台
- }
- }catch(IOException e){
- System.out.println(e);
- }
- }
- }
预定义流(属于字节流):System.in标准输入流,默认是键盘,InputStream类型的对象
System.out标准输出流,默认是控制台,PrintStream类型的对象
System.err标准错误流,默认是控制台,PrintStream类型的对象