一. 创建文件(1)最常用的(获得一个固定路径下的文件对象)File parentFile = new File(“D:\\My Documents\\.....”);//参数是一个路径的字符串。
(2)在父目录创建一个名为child的文件对象,child 为文件对象的名字File chileFile= new File(“D:\\My Documents\\.....”,String child);或File chileFile= new File(parentFile,String child);二,常见文件夹属性和方法(1)createNewFile();该方法的作用是创建指定的文件。
该方法只能用于创建文件,不能用于创建文件夹,且文件路径中包含的文件夹必须存在File file=new ("D:\\My Document\\text.txt");file.createNewFile();这样就会在D盘下的My Document 创建text.txt的记事本(注意:首先得保证D盘下有My Documen这个文件夹)(2)mkdir();根据File对象的名字(路径)创建一个目录(文件夹),如果是相对目录,则新建的目录在当前目录下(3)mkdirs();如果File对象名字有多级目录,则可以调用该方法一次性创建多级目录。
(4)exists();判断File对象指向的文件是否存在,返回一个boolean类型(5)isDirectory();判断File对象指向的文件是否为目录,返回一个boolean类型的值,true或者false。
(6)getName();获得文件名称(不带路径)(7)length();得到File对象指向文件的长度,以字节计算,返回一个长整形的值(long);注意:在系统中,文件夹(目录)的大小为零,也就是不占用空间,使用length()时返回的是0(8)delete();删除File对象所指定的文件(9)isFile();判断File对象指向的文件是不是标准文件(就像图片,音乐文件等)三,文件的属性和方法1.File.separator 当前操作系统的名称分隔符,等于字符串“\”.2.File.pathSeparator当前操作系统的路径分隔符,等于字符串“;”.3. File file=new ("D:\\My Document\\text.txt");file.canExecute();测试应用程序是否可以执行该文件;4.File file=new ("D:\\My Document\\text.txt");file.canRead();测试用用程序是否可以读取该文件5.file.canWrite();测试用程序是否可以修改文件6.file.exists();测试此抽象路径名表示的文件或目录是否存在pareTo(file1);按字母顺序比较两个抽象路径。
8.file.getAbsolutePath()返回此抽象路径名的绝对路径名字字符串。
9.file.getCanonicalPath();返回此抽象路径名的规范路径名字符串。
10.file.getName();返回抽象路径名表示的文件和目录名称。
11.file.getParent();返回抽象路径父目录的名字。
如果此路径名没有指定父目录名字则返回null。
12.free = file.getUsableSpace();返回此抽象路径名指定的分区上可用于此虚拟机的字节数13 . = file.hashCode() ;计算此抽象路径名的哈希码14 . = file.isAbsolute();测试此抽象路径名是否为绝对路径名15.ong length = file.length()返回由此抽象路径名表示的文件的长度16.String[] array = file2.list();返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录17. File[] array1 = file2.listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件18.File[] roots = File.listRoots();列出可用的文件系统根,静态方法比如C:/,D:/19.file.setReadOnly()设置文件只读;20.files.setWritable(true)设置文件可写;三读取文件FileReader fr=new FileReader(参数)BufferedReader br = new BufferedReader(fr); String a=br.readLine();while(a!=null){操作}br.close();fr.close();四.写入文件// 将数据写入文件FileWriter fw = new FileWriter(%%1);fw.write(%%2);fw.close();五杂项1,提取扩展名String %%2=(new File(%%1)).getName().split(".")[1]; 2,提取文件名String %%2=(new File(%%1)).getName().split("//")[1];3. 提取文件路径String %%2=(new File(%%1)).getPath();4. 替换扩展名File replaceExt=new File(%%1);replaceExt.renameTo(replaceExt.getName().split(".")[0]+"."+%%2); 例子1.枚举一个文件夹中的所有文件夹//import java.io.*;//import java.util.*;ArrayList<String> folderList = new ArrayList<String>(); folderList.add(%%1);for (int j = 0; j < folderList.size(); j++) {File file = new File(folderList.get(j));File[] files = file.listFiles();ArrayList<File> fileList = new ArrayList<File>();for (int i = 0; i < files.length; i++) {if (files[i].isDirectory()) {folderList.add(files[i].getPath());} else {fileList.add(files[i]);}}for (File f : fileList) {%%2=f.toString();%%3 }}例子2复制文件int bytesum = 0;int byteread = 0;File oldfile = new File(%%1);try {if (oldfile.exists()) { //文件存在时InputStream inStream = new FileInputStream(oldfile); //读入原文件FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));byte[] buffer = new byte[5120];int length;while ( (byteread = inStream.read(buffer)) != -1) {bytesum += byteread; //字节数文件大小System.out.println(bytesum);fs.write(buffer, 0, byteread);}inStream.close();}}catch (Exception e) {System.out.println("复制单个文件操作出错");e.printStackTrace();}六,数据流的详细介绍1, 在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2,任何能够产生流和数据源的javaio对象都看成inputStream对象,它既然可以产生流,我们就可用read()的封装方法来进行(将数据从水龙头进行读取数据)3任何能够接受数据(源)流的对象javaio的叫做outputStream,他能就收流的数据,我们调用write方法来进行数据收集4我们可以在inputStream和outputstram的基础上,从实际出发从新封装不同属性的输入输出数据流,javaio提供了很多丰富的输入输出对象七,字节流和字符流的区别(字节:是一种计量单位,字符:常使用汉字和符号一个字符等于两个字节)1以Stream结尾的都是字节流,都已reader 和writer结尾的都是字符流,两者的区别就是一个在读写的时候按照字符,一个是按照字节2在读写的过程当中要对内容安行进行处理,比如特定行字符或者是一行数据时一般会选择字符流3如果对内容没有要求一般选择字节流八,字符流的介绍基于Stream的字节流DataInputStream-------DataOutputStreamFileInputStream-------FileOutputStream基于Stream的字符流FileWriter--------FileReaderStringWriter--------StringReaderInputStream:是一个出水龙头(把水封装在里头)的一个实物对象,该对象的read方法呢,就想成这个出水龙头这一机制对象的开关钮,你read或openStream(其他对象包容InputStream对象的对象方法)一下呢,就等于打开了出水龙头的按钮,水就出来了,里头封装的水是什么性质的呢,你就用相应的容器来装,如string或byte[].....OutputStream:你就在InputStream基础上反着想就ok了OutputStream流1,fo为流变量fo.write(int b)//往流当中写入一个字符fo.write(byte b[])往流当中写乳一个字符数组fo.write(byte b[],int begin,int len) 写入数组b从下标begin开始,长度为len的字节流2.fo.flush()刷空数据流,并输出所有被缓存的字节,由于某些流支持缓存的功能,该方法吧缓存中所有的字节强制输出到流中3,fo.close()流操作完必须关闭流(比如在读文件的时候流不关闭,之后不能对文件进行删除操作)InputStream 流1,ip为输出流对象Ip.read(); 读取一个字节,返回的是一个字节Ip.read(byte b[])读取一个字节数组,返回一个字节数组串Ip.read(byte b[],int bengin,int len) 读取len个字节从下标为begin开始2,ip.available() 返回字节流中尚未读取的字节数量3,ip.mark(int readlimit)记录当前指针所在的位置readlimit指指针读取的第readlimit个字节后Ip.reset()把读的指针重新指向mark方法记录的位置字节流:处理字节的输入和输出。