33、java的文件字节流和字符流

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18077275/article/details/89786693

1、文件字节流

由于应用程序经常需要和文件打交道,所以InputStream专门提供了读写文件的子类:FileInputStream和FileOutputSream类。如果程序对文件的操作比较简单,比如只是顺序地读写文件,那么就可以使用FileInputStream和FileOutputSream类创建的流对文件进行读写操作。 

2、文件字节输入流

1).创建文件字节输入流 
   FileInputStream类创建的对象被称作文件字节输入流。 
 ◆构造方法:
    FileInputStream(String name);
    FileInputStream(File file); 
 ◆读取一个名为hello.txt的文件,建立一个文件输入流对象,如下所示:
     try { FileInputStream in = new FileInputStream("hello.txt"); 
        }
       catch (IOException e) {
             System.out.println("File read error:"+e );
         } 
2).read方法以字节为单位读文件
    int read(); 
       int read(byte b[]);
       int read(byte b[],int off,int len);  

3、文件字节输出流

1).创建文件字节输出流 
   FileOutputStream类创建的对象被称作文件字节输出流。 
构造方法:
     FileOutputStream(String name)
     FileOutputStream(File file) 
2).以字节为单位写文件
   FileOutputStream流的目的地是文件,所以文件输出流调用write(byte b[ ])方法把字节写入到文件。
4、示例代码

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

public class Demo36 {

    public static void main(String[] args) {
        File file = new File("C:\\Users\\blue\\Desktop\\test\\a.txt");
        File file2 = new File("C:\\Users\\blue\\Desktop\\test\\c.txt");
        byte[] b = new byte[100];
        String txt = "我是中国人";
        byte[] b2 = txt.getBytes();
        int count = 0;
        try {
            FileInputStream is = new FileInputStream(file);
            while((count = is.read(b)) != -1){
                String string = new String(b, 0, count);
                System.out.println(string);
            }
            is.close();
            
            FileOutputStream os = new FileOutputStream(file2);
            os.write(b2);
            os.close();
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
5、文件字符流

字节输入流和输出流的read和write方法使用字节数组读写数据,即以字节为基本单位处理数据。因此,字节不能很好的操作Unicode字符,例如,一个汉字在文件中占用了2个字节,如果使用字节流,读取不当就可能会出现“乱码”现象。
1).FileReader和FileWriter用来创建文件字符输入、输出流,
构造方法:
   FileReader(String filename);
   FileReader(File filename);
   FileWriter (String filename); 
   FileWriter (File filename); 
2).字符输入流和输出流的read()和write()方法以字符为基本单位处理数据。 
6、示例代码

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Demo37 {

    public static void main(String[] args) {
        String content = "hello我是中国人";
        File file = new File("C:\\Users\\blue\\Desktop\\test\\c.txt");
        char[] c = content.toCharArray();

        try {
            FileWriter fw = new FileWriter(file);
            fw.write(c);
            fw.close();

            FileReader fr = new FileReader(file);
            char[] c2 = new char[100];
            int count = 0;
            while ((count = fr.read(c2)) != -1) {
                String string = new String(c2, 0, count);
                System.out.println(string);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
 

猜你喜欢

转载自blog.csdn.net/qq_18077275/article/details/89786693