FIleInputStream中方法
int available();返回流当中剩余的没有读到的字节数量
long skip(long n);跳过几个字节不读
一个字节的读取效率慢。硬盘和内存交互太频繁,浪费资源。(推荐下面)
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class test {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("D:\\test.txt");
//死循环去读
/* while (true) {
int read = fis.read();
if (read == -1) {
break;
}
System.out.println(read);
}*/
//改造while
int readData=0;
while ((readData = fis.read())!=-1){
System.out.println(readData);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
//关闭流的前提是:流不是空,流是null没必要关闭
if (fis != null) {//避免空指针异常
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果
229
149
138
229
164
167
229
164
167
升级版需要掌握
"mybatis001/src/main/java/com/itcast/dao/test.txt"是当前工程的下的路径(相对路径);
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 最终版需要掌握
*/
public class test {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("mybatis001/src/main/java/com/itcast/dao/test.txt");
//准备一个数组
byte[] bytes = new byte[4];
/* while (true){
int readCount = fis.read(bytes);
if (readCount==-1){
break;
}//把byte数组转换字符串,读到多少个转换多少个
System.out.print(new String(bytes,0,readCount));
}*/
int readCount = 0;
while ((readCount = fis.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, readCount));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
//关闭流的前提是:流不是空,流是null没必要关闭
if (fis != null) {//避免空指针异常
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果
控制台test.txt读到
public class HelloWorld{}
int available();读取字节
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class test {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("mybatis001/src/main/java/com/itcast/dao/test.txt");
byte[] bytes = new byte[fis.available()];
int read1 = fis.read(bytes);
System.out.println(read1);//25字节
System.out.println(new String(bytes));//public class HelloWorld{}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
//关闭流的前提是:流不是空,流是null没必要关闭
if (fis != null) {//避免空指针异常
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果
控制台test.txt读到
public class HelloWorld{}
skip();使用
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class test {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("mybatis001/src/main/java/com/itcast/dao/test.txt");
//skip跳过几个字节不读取,这个方法以后可能用到。
fis.skip(3);
System.out.println(fis.read());//108
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {//关闭流
//关闭流的前提是:流不是空,流是null没必要关闭
if (fis != null) {//避免空指针异常
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果
108