第一:File类(主要获取文件名,判断文件是否存在,创建或者删除文件)
举个例子,代码如下:
importjava.io.File;public classMain{public static voidmain (String[] args) {
File file=new File("F:\\test");
GetFileName(file);
}public static voidGetFileName(File file){if(file.exists()) {
File[] files=file.listFiles();if (files!=null&&files.length>0) {for(File s:files) {if(s.isDirectory()) {
System.out.println(s);
GetFileName(s);
}elseSystem.out.println(s);
}
}
}else{
file.mkdir();
}
}
}
这个是File类的一个遍历的作用,结果是:
当然我的文件夹是这样的
以上代码里面我们需要知道的一些知识点:
//创建File类的对象,输入路径
File file=new File("F:\\test");//判断文件是否存在,可以是文件夹也可以是文档
file.exists();//判断文件是否是文件夹
file.isDirectory();//获取该文件夹目录下的所有文件,必须是文件夹才可以执行此操作
File[] files=file.listFiles();//创建文件
file.mkdir(); //创建文件夹
file.createNewFile(); //创建文件
//删除文件 file.delete();
这些是一些最基础的,当然还有一些其他的方法,就不深入的介绍
第二:RandomAccessFile类(主要是读文件内容,写文件内容)
第一步,我们已经学习了如何的去创建删除文件,如何获取文件名称。这一步来操作,如何在文件内写点东西,读点东西。
Java里面写东西,本身就是byte byte的结合,而且会有一个指针会记录写的数据的位置。而且写完东西之后,必须要关闭,否则会有异常问题。
我们看代码:
importjava.io.File;importjava.io.IOException;importjava.io.RandomAccessFile;public classMain{public static void main (String[] args) throwsIOException {//创建File类的对象,输入路径
File file=new File("F:\\test\\蜀云泉.txt");if(file.exists()) {//打开我们的文件,选择模式。rw是读写模式,r是只读模式。这个会有IO异常,我们已经在方法哪里抛出异常
RandomAccessFile raf=new RandomAccessFile(file,"rw");//写东西,可能会出现乱码,所以最好指定编码格式。
raf.writeUTF("许嵩是最佳歌手");
System.out.println(raf.length());//读东西,先把指针放到开头
raf.seek(0);
String content=raf.readUTF();
System.out.println(content);
raf.seek(raf.length());
raf.writeUTF("追加内容");
raf.close();
}
}
}
结果:
是UTF编码是一个 汉字,3个字节。之所以是23是因为自动写进去了一个符号?,看看结果
可能是哪里自己加的吧。。。。应该是writeUTF这个方法自己加的,我用gbk编码就没有这种情况。
其实write方法有很多种可能的,什么先写进byte数组,在write,还有write字节什么的。我就不过多的探讨了。指针那块也很好理解,追加内容的也是。最后close一下就完事了,一定要close
第三: IO流
IO流其实分为字符流和字节流,比较重要的是 InputStream 和 OutputStream 。他们各自都有三个方法,最常用:
InputStream流
in.read();
in.read(byte[] b);
in.read(byte[] b,int off,intlen);
OutputStream流
out.write(intb);
out.write(byte[] b);
out.write(byte[] b,int off,int len);
Java里面封装了两个专门来操作文件的类,分别是 FileInputStream和FileOutputStream 他们俩继承了上面的俩。我们之间通过一个复制文件的功能的代码,来看看:
import java.io.*;public classMain {public static void main(String[] args) throwsIOException {
copy(new File("F:\\test\\蜀云泉.txt"),new File("F:\\test\\副本.txt"));
}//写一个复制文件的方法,把FileName1的数据复制到FileName2里面去
public static void copy(File FileName1, File FileName2) throwsIOException {if (!FileName1.isFile()) {throw new IllegalArgumentException("FileName1不是文件");
}if (!FileName2.isFile()) {
FileName2.createNewFile();
}
FileInputStream in= newFileInputStream(FileName1);
FileOutputStream out= newFileOutputStream(FileName2);//写一个字符数组去读
byte[] result = new byte[1024];intb;while ((b = in.read(result, 0, result.length)) != -1) {
out.write(result,0, b);
out.flush();
}
in.close();
out.close();
}
}
是不是用到上面的三个方法了,就是这么简单。学会read和write方法就行了
java.io.File类:表示了文件和目录. Window系统:表示路径使用\.但是在Java中,一根\表示转义符,我们就不得不写成:\\. String path = "D:\\JavasePros\\day11"; 路径分割使用;. Unix 系统:表示路径使用/. String path = "D:/JavasePros/day11"; 路径分割使用:.