Java本地文件操作

概述: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转化为URL
toURI():URI转化为URI
canRead():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
长恨歌
一二三四五六,一二三四五六。
六五四三二一,六五四三二一。
一二三四五六,一二三四五六。
六五四三二一,六五四三二一。
写入完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitBlit使用安装教程~

GitBlit使用安装教程~GitBlit是什么&#xff1f;Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库.相当于 Git 的 Java 管理工具.git的管家,通俗点来说就是一个相当于SVN的工具,用于多个人共同开发同一个项目&#xff0c;共用资源的目的。 下载与安装&#xff1a; 1. …

怎么用计算机名称共享打印机设置,如何共享打印机设置教程

打印机怎么共享&#xff0c;算是老问题了&#xff0c;但很多时候分享都是老系统的&#xff0c;这里分享WIN7系统和win10系统两种系统的打印机如何共享的设置教程。一、WIN7设共享准备工作&#xff1a;添加打印机之前我们要知道主机的一些信息&#xff0c;如计算机名、工作组、共…

Java项目转变为Java Web项目

1、找到项目工作空间目录&#xff0c;打开.project文件&#xff0c;并修改文件&#xff0c; 修改如下&#xff1a; 找到&#xff1a;<natures> </natures>代码段&#xff0c;在代码段中加入如下内容并保存&#xff1a; <nature>org.eclipse.wst.common.proje…

计算机网络学习总结

计算机网络学习总结~1. OSI&#xff0c;TCP/IP,五层协议的体系结构&#xff0c;以及各层协议&#xff1a; OSI 分层&#xff1a;7层&#xff0c;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示层&#xff0c;应用层 TC…

计算机网络实验报告校园网,校园网规划与设计实验报告.docx

校园网规划与设计实验报告校园网的规划与设计实验报告篇一&#xff1a;校园网设计与规划报告(计算机网络大实验)  《计算机网络》实践报告  校园网设计与规划   专 业&#xff1a; 软件工程   班 级&#xff1a; 软件0901  姓 名&#xff1a; 李双双  学 号:  指…

Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包

一、建立脚本文件&#xff1a; 二、设置权限 三、将脚本文件放到启动目录下 四、更新优先级 cd /etc/init.d sudo update-rc.d startm.sh defaults 90 至此&#xff0c;开机启动已经完成&#xff0c;我们可以通过reboot重启linux&#xff0c;来查看jar包是否已经启动成功。而…

鼠标键盘与计算机无法连接,只有三个步骤可以轻松解决无法识别计算机,键盘和鼠标的问题!...

对于大多数人来说&#xff0c;无论是笔记本电脑还是台式机&#xff0c;浏览网络&#xff0c;聊天&#xff0c;玩游戏和办公室工作都像进食和喝水一样容易。但是了解计算机并不意味着了解计算机。有时&#xff0c;一个非常常见的小问题“键盘和鼠标无法响应”常常使许多朋友感到…

git学习入门~~~

创建版本库&#xff08;又名仓库&#xff0c;repository&#xff09;&#xff0c;可以理解为一个仓库&#xff0c;这个目录里面的所有文件都可以被Git管理起来&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#xff0c;或者…

Linux(Ubuntu)设置系统时区

设置东八区的时间&#xff1a; #cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 查看&#xff1a; #date 如果现实CST即为正确。 另外&#xff0c;Java打成jar包后再linux下运行&#xff0c;获取的时间有可能不正确&#xff0c;我们需要修改一个文件&#xff0c;Ubuntu系…

兰州交通大学计算机科学与技术排名,兰州交通大学怎么样 全国排名是多少

兰州交通大学&#xff0c;原名兰州铁道学院&#xff0c;是我国第三所铁路院校。兰州交通大学学科特色鲜明、门类齐全&#xff0c;是中央部委投资省部共建重点大学&#xff0c;下面小编为大家详细介绍&#xff0c;供大家参考。兰州交通大学排名2020年兰州交通大学全国排名第166名…

数据库的哪些事儿~~

一 . 事务的四个特性&#xff1f; 四大特性是&#xff1a;ACID 原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;、持久性&#xff08;Durability&#xff09;介绍四个特性概念&#xff1b; 原…

众友科技计算机组成原理,组成原理:采用微程序控制器的模型机CPU设计(10页)-原创力文档...

课程设计报告课程名称&#xff1a; 计算机组成原理设计题目&#xff1a; 采用微程序控制器的模型机 CPU设计院 系&#xff1a;班 级&#xff1a;设 计 者&#xff1a;学 号&#xff1a;指导教师&#xff1a;目 录课程设计(大作业)报告 1昆明学院课程设计(大作业)任务书 错误&am…

JVM 运行时数据区域总结

引言 本博客总结自《深入理解 Java 虚拟机》&#xff0c;第二章。 一、概述 Java 虚拟机在执行 Java 程序的时候会把它所管理的内存划分为若干个不同的数据区域。 记忆口诀&#xff1a;两栈一计数&#xff0c;一堆一方法。 解释&#xff1a;第一句两栈分别是VM栈和本地方法栈…

一篇博客读懂设计模式之---单例模式

一篇博客读懂设计模式之---单例模式 一。 单例模式 单例对象&#xff08;Singleton&#xff09;是一种常用的设计模式。在Java应用中&#xff0c;单例对象能保证在一个JVM中&#xff0c;该对象只有一个实例存在。这样的模式有几个好处&#xff1a; 1、某些类创建比较频繁&…

计算机会计知识竞赛,全国企业会计信息化知识竞赛试题及答案

全国企业会计信息化知识竞赛试题及答案第 1 题(单选)下列各项中&#xff0c;符合会计软件不可逆的记账功能要求的是( A )A.记账标记不得通过任何操作予以取消B.不可以用红字凭证更正记账错误C.可以删除已经记账的记账凭证D.可以进行反记账第 2 题(单选)下列关于信息系统自动生成…

使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据

功能逻辑&#xff1a;将一个视频文件通过缓冲字节输入流进行读取&#xff0c;然后再通过缓冲字节输出流将其重新拷贝输出。public static void main(String[] args) {try {FileInputStream fis new FileInputStream("Rick_and_Morty.mkv");//第二个参数指定了缓冲区…

多媒体计算机技术的主要特点,多媒体技术主要特点?

满意答案01and032013.11.24采纳率&#xff1a;41% 等级&#xff1a;11已帮助&#xff1a;5479人多媒体技术有以下几个主要特点&#xff1a;(1)集成性 能够对信息进行多通道统一获取、存储、组织与合成。(2)控制性 多媒体技术是以计算机为中心&#xff0c;综合处理和控制多媒…

java io流的学习总结~~

java io流的学习总结~~流的概念和作用流是一组有顺序的&#xff0c;有起点和终点的字节集合&#xff0c;是对数据传输的总称或抽象。即数据在两设备间的传输称为流&#xff0c;流的本质是数据传输&#xff0c;根据数据传输特性将流抽象为各种类&#xff0c;方便更直观的进行数据…

计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示

计算机组成原理第二章数据在计算机中的表示 (91页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;14.90 积分第二章 数据在计算机中的表示 n 概述 n 字符编码 n 中文编码 n 逻辑数据 n 数值数据 n 校验…

linux 指令学习总结~~~

linux 指令学习总结~~~目录操作&#xff1a;mkdir $HOME/testFolder&#xff08;创建一个目录&#xff09; cd ./testFolder(cd $HOME/testFolder)&#xff08;切换目录&#xff09; cd ..&#xff08;切换到上级目录&#xff09; mv $HOME/testFolder /var/tmp/&#xff08;移…