天天看点

IO流相关知识

下面四个是有关FileinputStream的知识


import java.io.FileInputStream;
import java.io.IOException;

//这里导入文件用的是绝对路径方法
public class MyFileistream1 {
    public static void main(String[] args) throws IOException {
        FileInputStream  fileInputStream=null;
        //FileInputStream  fileInputStream = new FileInputStream("D:\\test\\try.txt"); 这种方法导入路径也可以,\\代表转义
        fileInputStream = new FileInputStream("D:/test/try.txt");
        while(true){
          int a=fileInputStream.read();
               if( a==-1)
                   break;
            System.out.println(a);
        }
        /* while(true){
            System.out.println(fileInputStream.read());
            if( fileInputStream.read()==-1)
                break;
        }*/     //我悟了,这个和上面是不同的,这个每循环一次读了两个字节
        /*while(true){
            int a=0;
            if( (a=fileInputStream.read())==-1)
                break;
            System.out.println(a);
        }*/    //这个和第一个循环是一样的


       /* System.out.println( fileInputStream.read());
        System.out.println( fileInputStream.read());
        System.out.println( fileInputStream.read());
        System.out.println( fileInputStream.read());
        System.out.println( fileInputStream.read());*/
            if(fileInputStream!=null){
                fileInputStream.close();
        }
    }
}
      
import java.io.FileInputStream;
import java.io.IOException;


//这里介绍了相对路径的知识,它要从当前位置(idea默认当前位置就是工程的根)作为起点开始找
public class MyFileistream2 {

    public static void main(String[] args) throws IOException {

        FileInputStream fileInputStream=new FileInputStream("first/try5.txt");
       // FileInputStream fileInputStream1=new FileInputStream("first/src/try1.txt");
       // FileInputStream fileInputStream2=new FileInputStream("first/src/com/kuang/try2.txt");
       //FileInputStream fileInputStream3=new FileInputStream("first/src/com/kuang/IO/try3.txt");

        //这里用到了字节数组
        byte[] count=new byte[4] ;
        int a=fileInputStream.read(count);       //一次读取最多count.length个字节,返回的值是读取的字节数目
        System.out.println(a);
        //System.out.println(new String(count));      //这是把字节数组全部转换为字符串
        System.out.println(new String(count,0,a));   // 这里采用读取多少个字节转多少个出来的方法
        a=fileInputStream.read(count);
        System.out.println(a);
       // System.out.println(new String(count,0,a));   //这是把字节数组全部转换为字符串,因为它剩下的三个为空,会被上次转的取代,结果错误
        System.out.println(new String(count,0,a));//所以它这里采用读取多少个字节转多少个出来的方法
        if(fileInputStream!=null)
        fileInputStream.close();
    }
}
      
import java.io.FileInputStream;
import java.io.IOException;

public class MyFileistream3 {

    public static void main(String[] args)throws IOException{
    FileInputStream fileInputStream=new FileInputStream("first/try.txt");
        byte[] b=new byte[4];
      /*  while(true) {
            int c = fileInputStream.read(b);
            if(c==-1)
                break;
            System.out.print(new String(b, 0, c));
        }  */
        int c=0;
        while((c=fileInputStream.read(b))!=-1){
            System.out.print(new String(b, 0, c));
        }
if(fileInputStream!=null)
fileInputStream.close();

    }
}
      
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;

public class MyFileistream4 {
    public static void main(String[] args) throws IOException {

        FileInputStream fileInputStream=new FileInputStream("first/try5.txt");
        System.out.println(fileInputStream.available());      //可以用来输出文件中剩余没有读取字节的数量
        //fileInputStream.skip(3);
        //System.out.println(fileInputStream.read());       这个skip方法可以跳过几个字节
         byte[] a=new byte[7];
         fileInputStream.read(a);      //available()的好处就体现在这里,知道了这个文件含有多少字节,
                                       // 一次就给它读取转换出来了,但是这不能够适用于大文件,因为byte数组不能太大
       System.out.println(new String(a));
        //System.out.println(fileInputStream.read());
       // System.out.println(fileInputStream.available());    //可以用来输出文件中剩余没有读取字节的数量


    }
}


这个是有关FileOutstream的知识      
import java.io.*;

public class MyFileostream1 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fileOutputStream=new FileOutputStream("my.txt",true);
        //如果原来有文件,并且文件里面有东西,不加上这个true的话,则它先将文件清空再写入
        //若加入了这个true则不会清空写入
        //如果本来没有这个文件,那么它会自动创建文件
        fileOutputStream.write(97);
        byte[] c={98,99,100};
        //这里是全部写出
  fileOutputStream.write(c);
  //这里是部分写出。写出b
fileOutputStream.write(c,0,1);

  String d="我爱中国";
  byte[] e=d.getBytes();         //这里是将字符串转换字符
  fileOutputStream.write(e);
  fileOutputStream.flush();

  if ((fileOutputStream!=null))
  fileOutputStream.close();
    }
}      

下面是有关FileReaderr的知识

import java.io.FileReader;
import java.io.IOException;

public class MyfileReader {

    public static void main(String[] args) throws IOException {
        FileReader fileReader=new FileReader("first//try5.txt");
        //System.out.println(fileReader.read());
     /*   while(true){
            int n;
            if ( (n=fileReader.read())==-1)
                break;
            System.out.println(n);
        }*/
        char[] m=new char[4];
        int p;
        while(true) {
           if((p=fileReader.read(m))==-1)
               break;
            System.out.println(new String(m,0,p));    //这里其实字符输出也是可行的,但是到了最后面的一个数组,
            // 因为数组没有读满文件就完了,这时去输出这个数组,为空的部分会被上次输出的数取代
        }
       //这里是对char数组进行循环
      /*  char[] m=new char[4];
        fileReader.read(m);
        for(char t: m)
            System.out.println(t);*/
        if(fileReader!=null)
            fileReader.close();
    }
}
下面是有关Filewriter的知识      
import java.io.FileWriter;
import java.io.IOException;

public class MyFileWriter {

    public static void main(String[] args) throws IOException {
        FileWriter fileWriter=new FileWriter("D:\\face.txt");
        char[] m={'1','我','是','中'};   //字符只能是一个字母,一个汉字,一个数字或任何一个符号,只能是一个,为空也不行
        fileWriter.write(m);
        fileWriter.write(m,0,2);
        fileWriter.write("\n");   //换行符
        fileWriter.write("我是中国人");
fileWriter.flush();
if(fileWriter!=null)
fileWriter.close();
    }
}
      

下面是有关用FileInputStream和Fileoutstream进行文件复制的知识

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class MyFileiostream  {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream=new FileInputStream("D:\\wang.txt");
        FileOutputStream fileOutputStream=new FileOutputStream("D:\\tan.txt");
        byte[] c=new byte[1024*1024];
        int n;
        if((n=fileInputStream.read(c))!=-1)
            fileOutputStream.write(c,0,n);
        fileOutputStream.flush();
        if(fileInputStream!=null)
        fileInputStream.close();
        if(fileOutputStream!=null)
            fileOutputStream.close();

    }
}
      

下面是有关用FileWriter和FileReader进行文件复制的知识

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class MyFileiostream  {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream=new FileInputStream("D:\\wang.txt");
        FileOutputStream fileOutputStream=new FileOutputStream("D:\\tan.txt");
        byte[] c=new byte[1024*1024];
        int n;
        if((n=fileInputStream.read(c))!=-1)
            fileOutputStream.write(c,0,n);
        fileOutputStream.flush();
        if(fileInputStream!=null)
        fileInputStream.close();
        if(fileOutputStream!=null)
            fileOutputStream.close();

    }
}