package file;
import java.io.*;
public class FileReader {
public static void main(String[] args){
// Demo1();
// Demo2();
// Demo3();
// Demo4();
// Demo5();
//Demo6();
Demo7();
}
//file的使用例子
public static void Demo1()
{
File f = new File("e:\\file");
if(f.isDirectory())
{
System.out.println(f.getPath());
}
}
public static void Demo2()
{
File f;
//File.separator是分隔符,因为不同平台可能用的不一样,windows可能用\\而linux可能用//
f = new File("e:" + File.separator + "file" + File.separator + "io.txt");//获得路径句柄
try {
System.out.println(f.createNewFile());//创建文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//f.delete();
System.out.println(f.getPath());
}
public static void Demo3()
{
File f=new File("e:\\file\\demo.txt");//构造一个路径的句柄
System.out.println(f.getPath());
System.out.println(f.getParent());
if(f.exists())//如果文件存在则删除,不存在则生成
{
f.delete();
//System.out.println("文件已经存在!");
}
else
{
try {
System.out.println(f.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void Demo4()
{
File file=new File("e:"+File.separator+"file");//获得e:file文件句柄
String[] str=file.list();//使用list()将里面的文件都放在String 数组里
for(int i=0;i<str.length;i++)
{
System.out.println(str[i]);
}
}
public static void fun(File f){
//判断给定的路径是否是目录,如果是目录在列出
if(f.isDirectory()){
File[] file = f.listFiles();
//再依次循环进行判断
try{
for(int i = 0;i < file.length;i++){
//继续把内容传入到fun方法之中进行验证
fun(file[i]);
}
}catch(Exception e){}
}
else{
System.out.println(f);
}
}
//使用递归调用 扫描e盘所有的文件
public static void Demo5()
{
File file=new File("e:\\");
fun(file);
}
//fileInputStream的使用例子
public static void Demo6()//错误例子,不能直接用String将字节流转为字符,应该用InputStreamReader
{
try
{
File file=new File("e:"+File.separator+"file"+File.separator+"io.txt");
FileInputStream fis=new FileInputStream(file);
byte[] b=new byte[fis.available()];
fis.read(b);//将文件的内容读取到byte数组中
fis.close();
String str=new String(b);//怎么会乱码???
System.out.println(str);
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void Demo7()
{
try
{
String encoding="GBK";
File file=new File("e:"+File.separator+"file"+File.separator+"io.txt");
FileInputStream fis=new FileInputStream(file);//从句柄中读取文件的字节流,创建字节流对象
if(file.isFile() && file.exists())
{
InputStreamReader isr=new InputStreamReader(fis,encoding);//将字节流转化为字符流,创建字符流对象
BufferedReader bfr=new BufferedReader(isr);//BufferedReader对使用者输入的字符进行缓冲
String line=null;
while((line=bfr.readLine())!=null)
{
System.out.println(line);
}
bfr.close();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}