FileInputStream读取磁盘内的文件

时间:2022-08-06 19:31:28

InputStream的使用;磁盘内的一个文件,读取文件内的数据到程序中,使用FileInputStream

列1:

<span style="font-size:14px;"><span style="font-size:14px;">@Test
public void test1() throws IOException{
/*
     * 磁盘内的一个文件,读取文件内的数据到程序中,使用FileInputStream,
     * */
//1 创建File类的对象,</span><pre name="code" class="java"><span style="font-size:14px;"> //要确保读取的文件一定存在,否则抛FileNotFoundException</span>
File file=new File("src//file//MyFile"); if(!file.exists()){ file.createNewFile(); } //2 创建FileInputStream类的对象 FileInputStream fis=new FileInputStream(file); //3 调用FileInputStream类的对象的read()来进行文件的读。read()每次读取文件的一个字节,执行到文件尾时,返回-1 int read; while((read=fis.read())!=-1){ System.out.print((char)read); } //4 关闭文件流 fis.close(); }</span>
 
为了保证不管在何种情况下都能顺利关闭流,即执行: 
<span style="font-size:14px;">fis.close();</span>

最好使用try,catch,finally,来处理异常

列2:

<span style="font-size:14px;">@Test
public void test1() {
//创建File类的对象
File file=new File("src//file//MyFile");
//创建FileInputStream类的对象
FileInputStream fis=null;
//调用FileInputStream类的对象的read()来进行文件的读。read()每次读取文件的一个字节,执行到文件尾时,返回-1
int read;
try {
fis=new FileInputStream(file);
while((read=fis.read())!=-1){
System.out.print((char)read);

}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭文件流
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}</span>

列3,利用read()一次读取多个字节:

/*
* 磁盘内的一个文件,读取文件内的数据到程序中,使用FileInputStream,要确保读取的文件一定存在
* */
@Test
public void test1() {
//创建File类的对象
File file=new File("src//file//MyFile");
//创建FileInputStream类的对象
FileInputStream fis=null;
//调用FileInputStream类的对象的read()来进行文件的读。read()每次读取文件的一个字节,执行到文件尾时,返回-1
int readCount;
byte[] by=new byte[5];
try {
fis=new FileInputStream(file);
while((readCount=fis.read(by))!=-1){
String str=new String(by,0,readCount);
System.out.print(str);
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭文件流
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
注意:以上String str=new String(by,o,readCount);此中的最后一个字段一定为readCount,不可为by.length,否则可能会出现最后一次读取,若没填满byte数组,则by中最后未被填满的字段为上一次by读取遗留下的字段。例如:eventss  读出来会是:eventssent