关于Java中使用字节流和字符流读写文件的相关知识

1、使用字节流类FileInputStream读文本文件

        FileInputStream称为文件输入流,它是字节输入流InputStream抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(简称内存)中,可以利用它来读取文本文件中的数据,具体实现步骤如下:

        1)导入相关的类(导包)

                import java.io.IOException;

                import java.io.InputStream;

                import java.io.FileInputStream;

        2)构造一个文件输入流对象

                InputStream fileObject = new FileInputStream("text.txt");//此时的文件输入流对象fileObject就和源数据源(text.txt)关联起来。

        3)利用文件输入流类的方法读取文本文件中的数据

                fileObject.available();//可读取的字节

                fileObject.read();//读取文件的数据

        4)关闭文件输入流对象

                fileObject.close();

使用字节流类FileInputStream读文本文件的代码如下:


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

public class FileInputStreamTest {

    public static void main(String[] args) throws IOException {
        //创建一个File类对象
        File file = new File("F:/test.txt");//括号中的字符串表示读取的文件的位置及文件名 

        //创建FileInputStream类对象
        FileInputStream fileInputStream = new FileInputStream(file);

        //通过fileInputStream对象调用方法从file对象指向的文件中读取数据
//        int read(byte[] b)从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

        //创建一个byte类型的数据
        byte[] bytes = new byte[1024];
        int num =fileInputStream.read(bytes);
        System.out.println("从流中读取的字节数:"+num);

        for (int i =0;i

2、使用字节流FileOutputStream写文本文件

        FileOutputStream称为文件输出流,它是字节输出流OutputStream抽象类的子类,它的作用是把内存中的数据输出到文件中,可以利用它把内存中的数据写入到文本文件中,具体实现步骤如下:

        1)导入相关的类

                import java.io.IOException;

                import java.io.OutputStream;

                import java.io.FileOutputStream;

        2)构造一个文件输出流对象

                OutputStream fos = new FileOutnputStream("text.txt");//此时的文件输出流对象fos就和目标数据源(text.txt)关联起来。

        3)利用文件输出流类的方法把数据写入到文本文件中。

                String str = "好好学习Java";

                byte[] words = str.getBytes();

                fos.write(words,0,words,length);//利用write方法将数据写入到文件中去

        4)关闭文件输入流对象

                fos.close();

使用字节流FileOutputStream写文本文件的代码如下:

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

public class FileOutputStreamTest {

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

        FileOutputStream fileOutputStream = new FileOutputStream("F:/test.txt",true);
        //通过fileOutputStream对象调用方法向F:/test.txt文件中写入数据

        //将数据字符串“asdfghjkl”写入文件中
        String str = "asdfghjkl";
        //将字符串转换为byte类型的数组
        byte[] bytes =str.getBytes();

        fileOutputStream.write(bytes);
        System.out.println("数据写入完毕");

        //关闭流
        fileOutputStream.close();

    }
}

3、使用字符流类BufferedReader和FileReader读文本文件

        BufferedReader和FileReader两个类都是Reader抽象类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:

        1)导入相关的类

                import java.io.FileReader;

                import java.io.BufferedReader;

                import java.io.IOException;

        2)构造一个BufferedReader对象

                FileReader fr = new FileReader("mytest.txt");

                BufferedReader br = new BufferedReader(fr);

        3)利用BufferedReader类的方法读取文本文件中的数据

                br.readLine();//读取一行数据,返回字符串

        4)关闭相关的流对象

                br.close();//后开的流先关

                fr.close();//先开的流后关

使用字符流类BufferedReader和FileReader读文本文件相关代码如下:

import java.io.*;
public class BufferedReaderTest {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("F:/test.txt")));
        //通过bufferedReader对象调用方法读取文件中的数据
        String str1 = bufferedReader.readLine();
        System.out.println(str1);
        String str2 = bufferedReader.readLine();
        System.out.println(str2);
        String str;
        while((str=bufferedReader.readLine())!=null){
            System.out.println(str);
        }

    }
}

 

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

public class FileReaderTest {
    public static void main(String[] args) throws IOException {
        FileReader fileReader = new FileReader("C:/test.txt");

        //通过fileReader对象调用方法读取文件中的数据
        int num;
        while((num=fileReader.read())!=-1){
            System.out.print((char)num);
        }
    }
}

 

4、使用字符流类BufferedWrite和FileWrite写文本文件

        BufferedWrite和FileWrite都是字符输出流Write抽象类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:

        1)导入相关的类

                import java.io.FileWriter;

                import java.io.BufferedWriter;

                import java.io.IOException;

        2)构造一个BufferedWriter对象

                FileWriter fw = new FileWriter("mytest.txt");

                BufferedWriter bw = new BufferedWriter(fw);

        3)利用BufferedWriter类的方法读取文本文件中的数据

                br.write("hello");//读取一行数据,返回字符串

        4)相关流对象的清空和关闭

                bw.flush();

                bw.close();//后开的流先关

                fw.close();//先开的流后关

         使用字符流类BufferedWrite和FileWrite写文本文件的代码如下:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class BufferWriterDemo01 {
    public static void main(String[] args) {
        //创建Writer对象
        Writer writer = null;
        //创建Buffered对象
        BufferedWriter bufferedWriter = null;
        try {

            writer = new FileWriter("C:/test.txt");
            bufferedWriter = new BufferedWriter(writer);
            //通过bufferedWriter对象调用方法向文件中写入数据
            bufferedWriter.write("你好世界!");
            //写入一个行分隔符
            bufferedWriter.newLine();
            bufferedWriter.write("asdfg");
            System.out.println("文件写入完毕");

        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

 

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterDemo01 {
    public static void main(String[] args) {

        //创建FileWriter对象
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter("C:/test.txt");
           //通过fileWriter对象调用方法向文件中写入数据
            fileWriter.write("hello world");
            fileWriter.flush();
            System.out.println("文件写入完毕");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally{
            //判断fileWriter对象是否为null
            if(fileWriter==null){
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

        }

    }
}

你可能感兴趣的:(java,jvm)