字节流:
package InputOutput; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /* * 字节流: * 如果用户想要操作的不是文本数据,而是图片数据,这时候就需要用到字节流 */ public class FileStreamDemo { public static void main(String[] args) throws IOException{ // writeFile(); // readFile_1(); // readFile_2(); readFile_3(); } /* * 使用字节流写入一个文件 */ public static void writeFile()throws IOException{ //创建一个字节输出流 FileOutputStream fos = new FileOutputStream("c:/2.txt"); //将需要写入的字符串写入,并且调用字符串的getBytes()方法,将字符串转换为字符数组 fos.write("abcdegfhijklmn".getBytes()); //字节流不用刷新 fos.close(); } public static void readFile_1() throws IOException{ //创建一个字节读取流 FileInputStream fis = new FileInputStream("c:/1.txt"); //读取数据(读取一个字节,效率慢) int ch = 0; while((ch = fis.read()) != -1){ System.out.print((char)ch); } } /* * 一次性读取多个 */ public static void readFile_2() throws IOException{ //创建一个字节流 FileInputStream fis = new FileInputStream("c:/1.txt"); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf)) != -1){ System.out.println(new String(buf,0,len)); } } /* * 第三各方读取字节流的方式,字节流特有的方式 * available(); 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 * (注意:如果我们操作的文件过大,超出了内存或者JVM的大小,则JVM直接崩溃,所以如果要操作大文件,还是建议采用第二种方式) */ public static void readFile_3()throws IOException{ FileInputStream fis = new FileInputStream("c:/1.txt"); // int num = fis.available(); //获取文件里面的数据长度,注意:如果有换行\r\n,代表两个字节 byte[] buf = new byte[fis.available()]; //注意:fis.available()获取文件的长度,做为数组的长度 fis.read(buf); //读取文件到数组中去 System.out.println(new String(buf)); //将数组转换为字符串,打印出来 } }