网站首页 > java教程 正文
Java文件操作
Java中关于文件的操作都是基于File类的,Java中的File类可以表示一个文件或者一个目录。我们可以利用该对象来对文件或者目录进行书属性修改:例如:文件的名称,修改日期的日期等等。
File 类的目的是获取对应路径的对象(文件或文件夹),不能直接对文件进行读写操作,只能修改文件的属性。
File file = new File(“文件路径”);//获取对应路径位置的文件对象
注意:文件路径问题:需要注意的是linux和windows路径格式是不一样的,linux下使用 “/” 作为路径分隔,而windows下使用 “\”作为路径分隔(JAVA中将“\”认为是转义符,所以需要写两个)。虽然JAVA拥有“一次编译,到处运行”的特性,但是代码书写同样需要考虑不同的系统平台。
File类操作
创建:
文件:
boolean file.createNewFile();//存在IOException,如果有一级路径不存在就会报错,并且返回false。成功则返回true。
文件夹:
boolean file.mkdir();//只创建一级目录,但需要保证父目录存在。如路径为 /test1/test2 那么只会创建test2这一级路径且返回true。如过test1这一级不存在不会报错,但是会返回false;
file.mkdirs();//创建目录及子目录,成功为true,失败为false。
文件及文件夹相关方法
权限相关:
Boolean canX():获取是否允许
setX(Boolean):设置是否允许
Read、Wirte、Execute。代表文件的三种权限:读、写和执行。
//是否允许读取
Boolean file.canRead();
//是否允许写入
Boolean file.canWrite();
//是否允许执行
Boolean file.canExecute();
//设置是否允许读取
file.setReadable(Boolean isAllow);
//设置是否允许写入
file.setWritable(Boolean isAllow);
//设置是否允许执行
file.setExecutable(Boolean isAllow);
注意:可能会设置失败,因为当程序运行时,默认是在当前用户下运行,如果你的账号没有文件夹的设置权限,那么是无法调整的。
信息相关:
判断文件是否存在,存在返回true,不存在返回false:
f1.exists();
获取当前文件或文件夹的名字:
f1.getName();
获取当前文件或文件夹的路径:
f1.getPath();
获取当前文件或文件夹的绝对路径:
f1.getAbsolutePath();
当前对象是目录吗:
f1.isDirectory();
当前对象大小,文件显示其大小,文件夹显示为0:
f1.length();
文件的输入与输出
File类的操作只涉及文件表层的属性与权限调整,如果想要访问其内部的数据,就需要用到输入输出流,输入输出流有两种格式,一种是字节流,以byte进行读取;另一种是字符流,以char进行读取。
文件字节输入输出流
文件的输入输出流是操作文件的,对目录无效。
文件字节输入流
文件字节输入流:FileInputStream。负责读取文件信息。
//首先创建文件对象
File file = new File("文件路径");
//创建文件输入流对象
FileInputStream inputstream;
try{
inputstream = new FileInputStream(file);//定义对象
//定义字节数组获取数据,这个字节数组长度为5,
byte[] bytes = new byte[5];
//定义长度用于获取当前读取长度
int len;
//循环读取,len代表当前实际读取到的长度,bytes代表当前读取到的内容
//需要注意的是:byte数组长度是固定的,所以开辟的空间是固定的,存在情况byte数组无法获取满,所以在处理byte数组时要加上len,根据len的长度去调整。
while((len = inputstream.read(bytes)) != -1){
//假如文件中都是字符串
//将byte数组转换为字符串,
//第一个参数为byte数组
//第二个参数为起始位置
//第三个参数为长度
String str = new String(bytes, 0, len);
}
}catch(IOException e){
}finally{
//如果字节流不再使用,一定要记得关闭
if(inputstream != null){
inputstream.close();
}
}
文件字节输出流
文件字节输出流:FileOutputStream。负责将信息写入到文件中。
//首先创建文件对象
File file = new File("文件路径");
FileOutputStream outputstream;//定义文件输出流对象
try{
outputstream = new FileOutputStream(file);
//将数据写入到outputstream
outputstream.write(byte[] bytes);//将byte数组写入
}catch(IOException e){
}finally{
if(outputstream != null){
//如果输出流不为空,关闭输出流
outputstream.close();
}
}
文件字符输入输出流
文件的字符输入输出流是指操作时以字符为单位进行,对于二进制文件可能导致乱码。
文件字符输入流
文件字符输入流:FileReader。负责读取文件信息。
//首先创建文件对象
File file = new File("文件路径");
//创建文件输入流对象
FileReader reader;
try{
reader = new FileReader(file);//定义对象
//定义字符数组获取数据,这个字符数组长度为5,
char[] chars = new char[5];
//定义长度用于获取当前读取长度
int len;
//循环读取,len代表当前实际读取到的长度,chars代表当前读取到的内容
//需要注意的是:char数组长度是固定的,所以开辟的空间是固定的,存在情况char数组无法获取满,所以在处理char数组时要加上len,根据len的长度去调整。
while((len = reader.read(chars)) != -1){
//假如文件中都是字符串
//第一个参数为char数组
//第二个参数为起始位置
//第三个参数为长度
String str = new String(chars, 0, len);
}
}catch(IOException e){
}finally{
//如果字节流不再使用,一定要记得关闭
if(reader != null){
reader.close();
}
}
文件字符输出流
文件字符输出流:FileWriter。负责将信息写入到文件中。
//首先创建文件对象
File file = new File("文件路径");
FileWriter writer;//定义文件输出流对象
try{
writer = new FileWriter(file);
//将数据写入到outputstream
writer.write(char[] chars);//将byte数组写入
}catch(IOException e){
}finally{
if(writer != null){
//如果输出流不为空,关闭输出流
writer.close();
}
}
猜你喜欢
- 2024-10-06 一文搞定java.lang.Class.isInstance和instanceof的区别
- 2024-10-06 如何使用Java 文件系统 File类?(java files类)
- 2024-10-06 Spring问题之提示文件不存在处理it does not exist
- 2024-10-06 Java中类加载器的工作原理(java中类加载器有几种)
- 2024-10-06 java常见问题(java常见问题及答案)
- 2024-10-06 「Java」常用的文件操作(java 文件处理)
- 2024-10-06 JAVA中的文件操作2-如何读写文件(java高并发读写文件)
- 2024-10-06 bitmap算法:如何在20亿个非负整数中如何判断一个数是否存在?
- 2024-10-06 Java 如何验证文件名的有效性?(java判断文件名包含字符串)
- 2024-10-06 java中读取properties文件最简单的方法
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)