使用 Java IO 流读取数据、写出数据

    xiaoxiao2022-07-15  175

    读数据:

    方法一:

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /* * 字节流读取数据:InputStream * * FileInputStream 从文件系统中的某个文件中获得输入字节 * 构造方法:FileInputStream(String name) * 字节流读数的步骤: * A、创建字节输入流对象 * B、调用读数据的方法 * C、释放资源 */ public class FileInputStreamDeam { public static void main(String[] args) throws IOException { //创建字节流输入对象 FileInputStream fis = new FileInputStream("a.txt"); //调用读数据的方法 //public int read():读取一个字节的数据,返回的是int类型的数。如果已经达到文件末尾,则返回-1 int by; //首先是执行的fis.read(),然后再赋值给by,然后再判断by是否等于-1 while ((by = fis.read())!= -1){ //输出的by是int类型的,需要强转为char类型,才能显示字符 System.out.print((char)by); } //释放资源 fis.close(); } }

    方法二:

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /* * 字节流读数据: * 方式1:一次读取一个字节 * 方式2:一次读取一个字节数组 * *public int read(byte[] b):从此输入流中将最多b.length个字符的数据读入一个byte数组中 * 返回:读入缓冲区的字节总数 */ public class FileInputStreamDeam02 { public static void main(String[] args) throws IOException { //创建字节输出流 FileInputStream fis = new FileInputStream("b.txt"); //调用读数据的方法 //定义一个数组 //byte[] bys = new byte[5]; //读数 //int len = fis.read(bys); //System.out.println(len); //byte[] ---> String //String(byte[] bytes),把byte数组中的数据转换成以一个字符串 //String(byte[] bytes, int offset, int length) 构造一个新的 String //while (len != -1){ // System.out.print(new String(bys , 0 ,len)); // len = fis.read(bys); //} //最终版代码 byte[] bys = new byte[1024]; //1024或者1024的整数倍 int len; while ((len = fis.read(bys))!= -1){ System.out.print(new String(bys , 0 ,len)); } //释放资源 fis.close(); } }

    写出数据:

    import java.io.FileOutputStream; import java.io.IOException; /* 写出数据的三个方法: public void write(int b):一次写一个字节 public void write(byte[] b):一次写一个字节数组 public void write(byte[] b,int off,int len):一次写一个字节数组的一部分 String类中的方法 byte[] getBytes() 将字符串转换为字节数组 */ public class StreamDemo { public static void main(String[] args) throws IOException { // 创建字节输出流 // 每次执行的时候,都把a.txt文件里的数据清空了。因为数据没有追加写入 FileOutputStream fos = new FileOutputStream("a.txt"); // 写入单个字节 // fos.write(97); // fos.write('b'); // 写入一个数组 // byte[] bys = { 97, 98, 99, 100, 101, 102 }; // fos.write(bys); // 写入一个数组的一部分 // byte[] byst = { 97, 98, 99, 100, 101, 102, 103 }; // fos.write(byst, 2, 5); // 借用String写入字符串 String s = "avsjfhafkfnf"; byte[] bytes = s.getBytes(); fos.write(bytes); // 释放资源 fos.close(); } }
    最新回复(0)