流总结

来源:互联网 发布:好布业软件jshby 编辑:程序博客网 时间:2024/04/28 02:56
1,File
a)File表示文件或者文件夹,不包含文件中的数据
    创建File对象,必须使之与文件相关联
     FIle file =new File(“G:\\JAVA”);
     File file =new File(“G:\\JAVA”,“Demo.txt”);
b)创建文件和文件夹
     File f =new File(“G:\\JAVA\\txt.txt”);
     try{
         f.createNewFile();
    }catch(IOException ie){
     //@
     }

     FIle dir =new File("G:\\JAVA\\a\\b");
    dir.mkdirs();//mkdir创建单级文件,mkdirs创建多级
    遍历所有文件及文件夹
public void list(File dir){
            File[] files = dir.listFiles();
        for(File file:files){
         if(file.isDirectory()){
            list(file);
     }
    sysout.(file.getName());
}

2,字节流
对二进制文件图片等进行的输入输出操作

a)FileInputStream
int read();//按字节读取
int read(byte[] b);//按byte【】个字节读取。返回实际读到的字节数,byte【】未满亦是如实返回;

//自适应文件大小读取
 File f = new File("F:\\test.txt");
            long len = f.length();
            byte[] bs = new byte[(int) len];

              
              //创建流
              FileInputStream fis = new FileInputStream(f);
              //读取一个字节
              int b = fis.read();
              int i = 0;
              while(b != -1){
                   //System.out.println(Integer.toHexString(b));
                   bs[i] = (byte) b;
                   b = fis.read();
                   i ++;
              }
              
              //关闭流
              fis.close(); 
              //将bs字节数组转换成字符串
              String s = new String(bs);
              System.out.println(s);

b)FileOutputStream
FileOutputStream fos = new FileInputStream(String name,true);//true表示追加,缺省表示覆盖

write(int b);                      //写入字节b;
write(byte[] b);                  //写入byte【】;
write(byte[]b,int off,int len) ;//从byte【】第off起写入len个;

String s = "字节流输入输出";
byte[] bs = s.getBytes();
fos.write(bs);

public class Copy {
    public static void main(String[] args) throws Exception{
         FileInputStream fis = new FileInputStream("C:\\爱丁堡.png");
         FileOutputStream fos = new FileOutputStream("D:\\xx.png");
         
         byte[] b = new byte[1024];
         int len = fis.read(b);
         while(len > 0){
              //写入另一个文件
              fos.write(b, 0, len);
              //继续读取下一批字节
              len = fis.read(b);
         }
         fos.close();
         fis.close();
    }
}


3,字符流
对汉字等进行读写操作的流,避免乱码

    FileReader(File file)                    // FileReader(String filename);
//案例读取path
     FileReaderfr = new FileReader("path");
     char[] c =new char[10];
     int len =fr.read(c);
     while(len!= -1){
         sysout(newString(c,0,len));
         len = fr.read(c);
     }
    fr.close();


FileWrite(String name);
fileWrite.write(char[] i,int off,int len)//输出指定位置的字符
fileWrite.write(String s,int off, int len)//输出字符串off之后的len个字符

FileWrite fw = new FileWrite(Filefile,true);//true同FileInputStream;

缓冲流等高级流是对低级流的封装,性能高;
关闭高级流则自动关闭低级流

缓冲输入流

//@
     publicstatic void main(String[] args) throws Exception{
         //高级流
         BufferedReader br = new BufferedReader(
                   new FileReader("F:\\test.txt"));
         
         //读
         String line = br.readLine();
         while(line != null){
              System.out.println(line);
              line = br.readLine();
         }
         
         br.close();
    }

缓冲输出流

//@
     publicstatic void main(String[] args) throws Exception{
         PrintWriter pw =
                   new PrintWriter(new FileWriter("F:\\test2.txt"));
         pw.write("aaaaaaaa");
         pw.write("\r\n");
         pw.write("bbbbbbbbbb");
         pw.write("\r\n");
         
         pw.close();
    }
字符字节流转换
InputStreamReader字节输入流转换成字符输入流
OutputStreamWriter字节输出流转换成字符输出流

//@
   BufferedReader br = newBufferedReader(
                   new InputStreamReader(
                             new FileInputStream("f:\\test.txt"))
                   );
         String line = br.readLine();
         while(line != null){
              System.out.println(line);
              line = br.readLine();
         }
         br.close();

0 0
原创粉丝点击