网站建设如何来选择空间,湘潭平台公司,企业网站 静态页面,深圳注册公司地址新规定概述#xff1a;Java本地文件操作#xff0c;涉及到文件/文件夹的创建#xff0c;文件/文件夹属性的读取与设置#xff0c;文件/文件夹的重命名#xff0c;目录结构的遍历#xff0c;以及文件内容的读取与写入。
File属于java.io.File。
---在Eclipse的大纲视图界面…概述Java本地文件操作涉及到文件/文件夹的创建文件/文件夹属性的读取与设置文件/文件夹的重命名目录结构的遍历以及文件内容的读取与写入。
File属于java.io.File。
---在Eclipse的大纲视图界面Outline中有绿色点的是用public修饰的方法黄色代表protected方法蓝色代表包方法红色代表private方法。
---------------------------------------------------------------------------------------------------------------------------------------------
File类常用的方法
构造方法File(String)File(String,String)File(File,String)File(URI)其他getName():String获取文件名getParent():String获取上一级文件的路径getParentFile():File返回父级文件getPath():String获取文件的路径isAbsolute():boolean判断是否为绝对路径getAbsolutePath():String获取绝对路径getAbsoluteFile():File获取绝对路径的File对象toURL():URL转化为URLtoURI():URI转化为URIcanRead():boolean判断是否可读canWrite():boolean判断是否可写exists():boolean判断文件是否存在isDirectory():boolean判断是否是一个文件夹isFile():boolean判断是否是文件isHidden():boolean判断文件是否隐藏length():long得到文件的长度createNewFile():boolean将File对象创建为一个真正的文件delete():boolean删除文件deleteOnExit():void当程序退出时删除文件list():String[]列出文件名称listFiles():File[]列出文件的列表mkdir():boolean创建文件夹mkdirs():boolean创建多级文件夹renameTo(File):boolean将文件重命名setReadOnly():boolean将文件设置为只读setWritable(boolean):boolean将文件设置为可写canExecute():boolean判断文件是否在当前操作系统中可执行createTempFile(String,String,File):File创建临时文件compareTo():int文件的对比
----------------------------------------------------------------------------------------------------------------------------------------
注意File对象既可以指代一个文件也可以指代一个文件夹实际上File对象更像是表示文件或文件夹的路径。 创建File对象时传入文件名称带后缀名如果没有指定路径的话那么文件会默认为当前项目的根目录下。 在填写File构造方法中参数的相对路径时一定不要以/开头。 ../代表上一级文件夹也就是工程项目的上一级。../../代表上一级的上一级两级向上跳转,“./”代表当前目录。
----------------------------------------------------------------------------------------------------------------------------------------
renameTo方法的效果更像是一种文件的移动将文件移动到指定路径的同时进行文件名的变更但是值得注意的是
renameTo方法必须在同一分区中进行比如windows系统中的不同盘区跨盘区执行renameTo方法就是不允许的。而linux系统就不会收这个限制。
如果非要进行跨区的文件移动就需要用拷贝的相关方法而不是文件的重命名。
-------------------------------------------------------------------------------------------------------------------------------------------
在删除文件夹的时候此文件夹必须是空文件夹否则不能被删除。
---------------------------------------------------------------------------------------------------------
常用的文件属性读取File file new File(test.txt);//判断文件是否存在file.exists()//读取文件名称file.getName()//这里注意获取到的文件名一定是前面Java声明的file对象的名字//读取文件路径file.getPath()//相对路径//读取文件绝对路径file.getAbsolutePath()//读取文件父级路径new File(file.getAbsolutePath).getParent()//注意因为file对象是通过相对路径进行构造的因此在调用getParent()方法时会返回null因此我们需要获取到file的绝对路径之后才可以获取到file的父级路径。//读取文件大小file.length()//返回值是long型的数值是字节byte//判断文件是否被隐藏。file.isHidden()//判断文件是否可读file.canRead()//判断文件是否可写file.canWrite()//判断是否为文件夹file.isDirectory()
------------------------------------------------------------------------------------------------------------------------package crc16test;import java.io.File;public class Scannner {public static void main(String[] args) {printFiles(new File(../crc-16), 1);}/*** 文件打印* param dir* param tab 文件缩进*/public static void printFiles(File dir, int tab) {//这种打印方式可以输出系统的隐藏文件if (dir.isDirectory()) {File next[] dir.listFiles();for (int i 0; i next.length; i) {for (int j 0; j tab; j) {System.out.print(|--);}System.out.println(next[i].getName());if (next[i].isDirectory()) {printFiles(next[i], tab 1);}}}}
}
输出结果
|--.classpath
|--.project
|--.settings
|--|--org.eclipse.core.resources.prefs
|--|--org.eclipse.jdt.core.prefs
|--bin
|--|--crc16test
|--|--|--Converters.class
|--|--|--CRC.class
|--|--|--Crc16.class
|--|--|--HelloFile.class
|--|--|--MyOuter$MyInner.class
|--|--|--MyOuter.class
|--|--|--ReadAndWriteFile.class
|--|--|--room.html
|--|--|--Scannner.class
|--|--|--SetProperty.class
|--|--|--Solution.class
|--|--|--sss.txt
|--json.jar
|--newFile.txt
|--src
|--|--crc16test
|--|--|--Converters.java
|--|--|--CRC.java
|--|--|--Crc16.java
|--|--|--HelloFile.java
|--|--|--MyOuter.java
|--|--|--ReadAndWriteFile.java
|--|--|--room.html
|--|--|--Scannner.java
|--|--|--SetProperty.java
|--|--|--Solution.java
|--|--|--sss.txt
|--text.txt
----------------------------------------------------------------------------------------------------------------------------------------------------------------------package crc16test;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;public class ReadAndWriteFile {public static void main(String[] args) {File file new File(text.txt);/* 文件的输入 */if (file.exists()) {System.err.println(exist);try {// 1.创建一个文件输入流FileInputStream fis new FileInputStream(file);// 2.创建文件输入流的Reader/*** InputStreamReader有多个构造器但是因为FileInputStream是字节输入流* 而InputStreamReader是字符输入流因此在调用构造器时我们选择带有字符编码的* 构造器否则会出现乱码。另外注意文件默认为GBK编码在创建文件的时候应当先设置好字符* 编码为UTF-8这样好统一前后的编码。*/InputStreamReader isr new InputStreamReader(fis, UTF-8);// 3.创建一个带有缓冲的输入流BufferedReader br new BufferedReader(isr);String line;while ((line br.readLine()) ! null) {System.out.println(line);}br.close();isr.close();fis.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} else {System.err.println(THE FILE DOES NOT EXIST);}/* 文件的输出 *///文件的输出不必担心文件是否存在的问题因为程序会自动进行文件的创建File newFile new File(newFile.txt);try {FileOutputStream fos new FileOutputStream(newFile);OutputStreamWriter osw new OutputStreamWriter(fos, UTF-8);BufferedWriter bw new BufferedWriter(osw);// 注意这种写入方式是覆盖性的。bw.write(123\n);bw.write(456\n);bw.close();osw.close();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}System.out.println(写入完成。);}
}输出结果exist
长恨歌
一二三四五六一二三四五六。
六五四三二一六五四三二一。
一二三四五六一二三四五六。
六五四三二一六五四三二一。
写入完成。