文件操作
文件类(File):
构造方法:
File file=new File(“路径名”);
一些File类的方法:
boolean canRead()//是否可写
boolean canWrite()是否可读
boolean isFile()是否为文件
boolean isAbsolute()是否为绝对路径
String getAbsolutePath()获得绝对路径
String getName()获得文件名
String getPath()获得路径
String getParent()获得父目录
long lenth()返回文件字节长度。文件夹返回0
mkdir() //创建文件夹(必须父文件夹存在)
mkdirs()//创建多层文件夹(父文件夹可以不存在)
从流的内容分
-
字节流
需要使用异常检测。
FileInputStream(向外输出数据)
可以使用一个byte数组来装载数据,使读取数据速度更快
byte b[]=new byte [1024];
int count=fis.read(b);返回值为byte数组的长度。如果没有数据,返回-1
在 过程中可以使用flush()函数来数据流压入文件。
FileInputStream fis=new FileInputStream(file); //括号中可以是File对象或是一个路径的字符串
FileOutputStream(写入数据)
使用方法和FileInputStream相似
使用Java程序复制文件
package try2; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Scanner; public class CopyFile { public void copyf(File file,String path) {//输入文件对象和复制文件的目标路径 try {//异常捕获 FileInputStream fis=new FileInputStream(file); File newfile=new File(path+file.getName()); FileOutputStream fos=new FileOutputStream(newfile); byte b[]=new byte [1024]; int count=fis.read(b); while(count!=-1) { fos.write(b, 0, count); fos.flush(); count=fis.read(b); } System.out.println("YES"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) {//实现函数功能 Scanner s=new Scanner(System.in); System.out.println("请输入待复制文件的绝对路径"); String file=s.next(); System.out.println("请输入复制的目的文件夹"); String path=s.next(); CopyFile c=new CopyFile(); c.copyf(new File(file), path); } }
-
字符流
使用方法和字节流的一样。只是读取方式是按字符来读取,一次读取一个字符。也可以使用char数组做运载,返回值是char数组的长度。数组为空时值为-1。
FileReader
FileWriter
注意:
FileWriter write=new FileWriter('文件名',true);//如果不加true这个参数,新写的内容会对原有内容覆盖。反之是在原有内容的基础上追加
BuffferedWriter类和FileWriter类使用方法类似,但有一个特殊函数newLine()它会在写文件时自动换行。
readLine()表示读取一行内容。