字节输入流
字节输入流通过FileInputStream实现对文件的读取操作。
通过文件路径来创建一个输出流,通过一个byte数组来接受读取到的文件内容,用read方法进行循环读取。当返回-1时则表示读取完成。关闭输入流。
java">import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {//定义一个输入流FileInputStream inputStream = new FileInputStream("D:/test/test1.txt");//通过一个byte数组来接受读取到的文件内容byte[] bytes = new byte[1024];//一次读1KB//循环读取while (true){//返回数组的长度,也就是包含了多少个元素int len = inputStream.read(bytes);//在read方法中对数组进行了修改,在方法外可以访问到修改过的内容,这类参数称为输出型参数。//读取完成if(len == -1){break;}//打印数组中的内容for (int i = 0; i < len; i++) {System.out.println(bytes[i]);}}//关闭流inputStream.close();}
}
字节输出流
字节输出流通过FileOutputStream来实现对文件的写入操作。
通过文件路径来创建一个输入流,用write方法以字节的形式写入文件,强制刷新缓冲区,让数据实时落盘,关闭输出流。
java">import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo2 {public static void main(String[] args) throws IOException {// 通过文件路径创建一个输出流FileOutputStream outputStream = new FileOutputStream("D:\\test\\test2.txt");//写入内容到文件,以字节的形式写入文件outputStream.write(97); //aoutputStream.write(98); //boutputStream.write(99); //coutputStream.write(13);outputStream.write(10);outputStream.write(-26);outputStream.write(-120);outputStream.write(-111);//强制刷新缓冲区outputStream.flush();//关闭输出流outputStream.close();}
}
字符输入流
字符输入流通过创建FileReader来读取。
java">import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Demo3 {public static void main(String[] args) throws IOException {// 创建一个字符输入流FileReader fileReader = new FileReader("D:/test/test1.txt");// 循环读取while (true){// 读取一个字符int data = fileReader.read();// 读取完成,达到退出条件if(data == -1){break;}// 打印结果,一个字符一个字符的打印System.out.println(data);}// 关闭流fileReader.close();}
}
字符输入流
字符输出流通过创建FileWriter来写入字符。
java">import java.io.FileWriter;
import java.io.IOException;public class Demo4 {public static void main(String[] args) throws IOException {// 定义一个字符输出流FileWriter fileWriter = new FileWriter("D:/test/test2.txt");// 写入具体的字符fileWriter.write("hello world");fileWriter.write("\n");fileWriter.write("你好世界!");// 强制刷新缓冲区fileWriter.flush();// 关闭流fileWriter.close();}
}
利用Scanner进行字符读取
直接使用InputStream进行读取是十分麻烦的,所以我们可以使用Scanner类来简化操作。
先创建一个输入流和Scanner对象,在创建Scanner对象时,在其构造方法中传入输出流对象以及指定的编码集。
循环读取时,通过判断Scanner对象是否还有下一行来判断是否读取完成。
最后进行打印,关闭Scanner和输入流。
java">import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;public class Demo5 {public static void main(String[] args) throws IOException {// 创建一个输入流FileInputStream inputStream = new FileInputStream("D:/test/test1.txt");// 借助Scanner来简化字符的读取操作Scanner scanner = new Scanner(inputStream,"UTF-8");// 循环读取while (true){// 是否还有下一行,如果没有下一行数据表示读取完成if(!scanner.hasNextLine()){break;}// 获取数据String line = scanner.nextLine();// 打印System.out.println(line);}// 关闭Scanner和输入流scanner.close();inputStream.close();}
}
利用PrintWriter来进行写入
对于写入操作,我们也能使用PrintWriter来简化操作。
先创建一个输出流和PrintWriter对象,将输出流对象传入PrintWriter中。
再通过PrintWriter来调用各种print方法来进行写入。
最后,不能忘记强制刷新缓冲区和关闭PrintWriter和输出流。
java">import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;public class Demo6 {public static void main(String[] args) throws IOException {// 创建一个输出流FileOutputStream fileOutputStream = new FileOutputStream("D:/test/test2.txt");// 根据输出流,创建一个PrintWriter对象,用于写入字符串PrintWriter printWriter = new PrintWriter(fileOutputStream);// 写入内容printWriter.println("Hello World");printWriter.println("这是一个简便方法,你好世界!");printWriter.printf("%s:%d","单价",5);// 强制刷新缓冲区printWriter.flush();// 关闭资源printWriter.close();fileOutputStream.close();}
}