一、java读文件的多种方式:
1、以字节的方式,每次读取一个字节
try {
//str1为文件路径
FileInputStream fip=new FileInputStream(str1);
int n=0
while((n=fip.read())!=-1){ //fip.read()方法,读取的时候是一个字节一个字节读取的
System.out.println(n);
}
fip.close(); //输入流如水龙头一样,不用时要将其关闭,不然会一直在读取状态
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("没有找到文件!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2、以行为单位,一次读一行。如上所说read()方法每次制度一个字节,读取的文件小一点还能忍,文件一大,运行起来特别慢,耗费时间。因此还是偏向于用一行行读的读取方式。
try {
FileInputStream fip =new FileInputStream(str1); //str1为读取的文件路径
BufferedReader bfr=new BufferedReader(new InputStreamReader(fip)); //如果单纯的使用fip.read()一个字节一个字节的读取,则比较耗费时间,采用BufferedReader则可以一行行的读取
String data=null;
try {
while((data=bfr.readLine())!=null){
System.out.println(data);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
二、上面是读取文件的两种方法,下面插入写入文件的方法,
File file=new File(str);
try {
FileOutputStream fop=new FileOutputStream(file); //创建输出流对象
String s="hello,word!";
byte[] b=new byte[1024];
b=s.getBytes(); //将String类型的s字符串以字符的形式赋给字节数组
try {
fop.write(b, 0, b.length);
fop.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
三、复制文件方法
try {
FileInputStream fip=new FileInputStream(str1);
FileOutputStream fop=new FileOutputStream(str2);
BufferedReader bfr=new BufferedReader(new InputStreamReader(fip));
String s=null;
while((s=bfr.readLine())!=null){
byte[] b=new byte[1024];
b=s.getBytes();
fop.write(b, 0, b.length);
}
fop.close();
bfr.close();
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("没有找到文件!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}