首页 > 代码库 > File类的基本操作之InputStream字节输入流
File类的基本操作之InputStream字节输入流
话不多少,我直接把代码贴上来了。有什么问题请给我留言
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; /** * 字节输出流:OutputStream,整个IO包中字节输出流的最大父类 * 字节输入流:InputStream * * InputStream使用子类FileInputStream。读取 */ public class InStream1 { /** * @param args */ public static void main(String[] args)throws Exception{ // TODO Auto-generated method stub //第1步:使用File类找到一个文件 File file = new File("d:" +File.separator +"test.txt"); //第2步:通过子类实例化父类对象 InputStream in = null; in = new FileInputStream(file);//通过对象多态性,进行实例化 //3.读 byte[] b = new byte[1024]; in.read(b); //4.关闭 in.close(); System.out.println(new String(b));//变成字符串输出 //遗留问题:留了许多空格。没有那么大,开了1024空间,没有内容的为空 } }
上一个程序的遗留问题:
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //解决遗留问题 public class InStream2 { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub //第1步:使用File类找到一个文件 File file = new File("d:" +File.separator +"test.txt"); //第2步:通过子类实例化父类对象 InputStream in = null; in = new FileInputStream(file);//通过对象多态性,进行实例化 //3.读 byte[] b = new byte[1024]; int len = in.read(b);//读取内容 //4.关闭 in.close(); //解决遗留问题,看String提供的方法 System.err.println("读入数据的长度:" + len); System.out.println(new String(b,0,len));//变成字符串输出 //能不能根据文件大小来开辟空间呢? } }
解决根据文件大小来开辟空间
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //解决根据文件大小来开辟空间 public class InStream3 { /** * @param args */ public static void main(String[] args)throws Exception { // TODO Auto-generated method stub //第1步:使用File类找到一个文件 File file = new File("d:" +File.separator +"test.txt"); //第2步:通过子类实例化父类对象 InputStream in = null; in = new FileInputStream(file);//通过对象多态性,进行实例化 //3.读 byte[] b = new byte[(int) file.length()]; //解决根据文件大小来开辟空间 int len = in.read(b);//读取内容 //4.关闭 in.close(); //解决遗留问题,看String提供的方法 System.err.println("读入数据的长度:" + len); System.out.println(new String(b));//变成字符串输出 } }
只适合知道文件大小的输入
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //只适合知道文件大小的输入 public class InStream4 { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub //第1步:使用File类找到一个文件 File file = new File("d:" +File.separator +"test.txt"); //第2步:通过子类实例化父类对象 InputStream in = null; in = new FileInputStream(file);//通过对象多态性,进行实例化 //3.读 byte[] b = new byte[(int) file.length()]; //解决根据文件大小来开辟空间 for (int i = 0; i < b.length; i++) { b[i] = (byte) in.read(); } // int len = in.read(b);//读取内容 //4.关闭 in.close(); //解决遗留问题,看String提供的方法 System.out.println(new String(b));//变成字符串输出 } }
当不知道读取内容有多大的时候,就只能以读取的数据是否为-1为读完的标志
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //当不知道读取内容有多大的时候,就只能以读取的数据是否为-1为读完的标志 public class InStream5 { /** * @param args */ public static void main(String[] args)throws Exception { // TODO Auto-generated method stub //第1步:使用File类找到一个文件 File file = new File("d:" +File.separator +"test.txt"); //第2步:通过子类实例化父类对象 InputStream in = null; in = new FileInputStream(file);//通过对象多态性,进行实例化 //3.读 byte[] b = new byte[1024]; //解决根据文件大小来开辟空间 int len = 0; int temp = 0;//接受每个读取进来的数据 while ((temp = in.read())!= -1) { //表示还有内容,文件没有读完 b[len] = (byte) temp; len++ ; } //4.关闭 in.close(); //解决遗留问题,看String提供的方法 System.out.println(new String(b,0,len));//变成字符串输出 } }
贴的太快了~差点儿吧程序关了~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。