java笔记(2)

java的输入输出流类

  处理字节流:输入流(IntputStream)、输出流(OutputStream)

  处理字符流:输入流(Reader)、输出流(Writer)


  IntputStream类(抽象类):是所有其它具体的字节输入流类的父类,如其(子类)FileIntputStream类  实现打开文件并读取文件的任务,其read()方法,实现了从打开的文件输入流按字节读取数据;BuffereIntputStream类 提供数据缓冲功能,加快读文件的速度;DataIntputStream类的对象完成各种java数据类型的数据读取工作

  常用方法:read()           从输入流读入数据,只能逐字节读取输入数据

                    skip(long n)  将指针从当前位置向后跳动n个字节

                    mark()           在指针位置做一个标记

                    Reset()          将指针移动到标记位置

                    close()           关闭输入流


  OutputStream类(抽象类):是所有其它具体的字节输出流类的父类,如其(子类)如其(子类)FileOutputStream类 ,提供了向文件写入字节的write()方法,实现了连接数据文件的能力,并实现按字节写文件;BuffereOutputStream类 提供数据缓冲区,包装FileOutputStream对象,加快读文件的速度;DataOutputStream类  提供了将java基本类型写入数据流的方法。

    常用方法:writer()        向输出流写入数据,只能逐字节输出数据

                      flush()         在具有缓冲功能的子类对象中,强制清空缓冲区

                      close()         关闭输出流


  Reader类:从输入流读入数据,为抽象类。字符输入流类的父类,子类有FileReader类,BuffereReader类

  常用方法:read()           从输入流读入数据,只能逐字节读取输入数据

                    skip(long n)  将指针从当前位置向后跳动n个字节

                    mark()           在指针位置做一个标记

                    Reset()          将指针移动到标记位置

                    close()           关闭输入流


  Writer类:向输出流写入数据,为抽象类。字符输出流类的父类,子类有FileWriter,BuffereWriter类,PrintWrite类(格式化)等

  常用方法:writer()        向输出流写入数据,只能逐字节输出数据

                      flush()         在具有缓冲功能的子类对象中,强制清空缓冲区

                      close()         关闭输出流

import java.io.*;
public class Test{
    System.out.printIn("读写文件测试");
    
    FileOutputStream a=new FileOutputStream("mydata.dat");
    BufferedOutputStream b=new BufferedOutputStream(a);
    DataOutputStream c=new DataOutputStream(b);
    //写入数据流
    c.writerChar("中");
    c.writerBoolean(true);
    c.writerInt(10);
    c.close();//关闭文件
    
    FileIntputStream A=new FileIntputStream("mydata.dat");
    BufferedIntputStream B=new BufferedIntputStream(A);
    DataIntputStream C=new DataIntputStream(B);
    //读出数据流
char x=C.readChar();
boolean y=C.readBoolean();
int z=C.readInt();
C.close();
System.out.printIn("字符=" +x+ "\n布尔=" +y+ "\n整形数="+z+)}
结果:
       读写文件测试      
       字符=中
       布尔=true
       整形数=10

从键盘输入字符串

string x;

InputStreamReader a=new InputStreamReader(System.in);

BufferedReader b=new BufferedReader(a);//为字符输入提供了数据缓冲功能

x=b.readLine();//reader类读字符数据

PrintWriter c=new PrintWriter(b);  c.printIn(x); c.flush() ;//write类写字符数据,将读取的数据写目标文件夹中

System.out.printIn("你输入的字符串是:"+x);

//InputStreamReader类用于从标准输入设备读取字节流,并把它们转换成字符流。BufferedReader接收InputStreamReader类BufferedReader对象的方法readerLine()读取字符串

查看目录中的文件和子目录名称
import java.io.*;
public class ListDir{
     public static void main(String[] args){
     //创建File类对象
     File a=new File("c:/文件.txt");
     if(a.isDirectory(){//判断a是否是目录
     //输出要查看的的文件目录
     System.out.printIn("当前目录为:"+a.getAbsolutePath());
     String b[]=a.list();//以字符串数组的形式返回当前file对象表示的目录下的文件和子目录

   //输出目录下的文件和子目录名称
     for(int i=0;i<b.length;i++){
     //为a文件创建子目录b[i]
    File c=new File(a,b[]);//File对象的构造方法之一:File file=new File(父目录,子目录名)
     if(c.isFile()){
     System...("是文件");}
     else if(c.isDirectory()){
     System...("是目录");
}})}}



创建源文件:               File类对象.createNewFile();
判断文件是否创建成功:     File类对象.exists();
移动文件到File类对象1:    File类对象.renameTo(File类对象1);
删除文件:                 File类对象.delete();
判断目录是否建立成功:     File类对象.mkdir();

复制文件内容:
              File a=new File("c:/文件.txt");//创建源文件
              BufferedReader b=new BuffereReader(new FileReader(a));
              String x=b.readerLine();//读取源文件到x

              File c=new File("c:/文件1.txt");//创建目标文件
              BufferedWriter d=new BuffereWriter(new FileWriter(c));
              PrintWriter e=new PrintWriter(d);
            e.printIn(x);//将读取的源文件内容x写入目标文件

读写二进制机制(使用NIO机制创建二进制文件的复制程序)
新的输入输出(NIO)库,是对I/O的优化
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class NioCopyFile{
public static void main(String [] args) throws IOException{
//创建文件输入流对象
FileInputStream fin=new FileInoutStream(args[0]);
//创建通道对象(通道是双向的,可读数据,也可写数据)
FileChannel fcin=fin.getChannel();
     //创建文件输出流对象
      FileOutputStream fout=new FileOutoutStream(args[1]);
      //创建通道对象
      FileChannel fcout=fout.getChannel();


     //创建通道需要使用的ByteBuffer对象,并向其中填充数据
ByteBuffer bbf=ByteBuffer.allocate(1024);//CharBuffer ShortBurrer Int/Double/Long/FloatBuffer共7种缓冲区类型

int r=fcin .read(bbf);//通道读取数据
while(r!=-1){
bbf.flip(); //反转缓冲区为输出数据做准备
fcout.write(bbf);//通道对象将缓冲区的数据写入文件

bbf.clear(); //在读入数据之前,要清楚缓冲区
r=fcin.read(bbf);
}
fcin.close();
fcout.close();
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值