首页 技术 正文
技术 2022年11月14日
0 收藏 964 点赞 3,218 浏览 3517 个字

一,File类:文件的创建和删除

1.File(String pathname):pathname是指路径名称。用法 File file = new File(“d:/1.txt “);

2.File(String parent, String child):parent是父路径字符串,child是子路径字符串。用法:File file = new File(” D:/”, ” letter.txt”);

3.File(File f, String child):File file = new file();

如果当前目录里不存在名为word的文件,File类对象可以调用createNewFile()方法创建一个名为word的新文件。

还可以用文件对象的delete()方法删除掉文件。

public class FileTest {
public static void main(String[] args) { File file = new File("weord.txt"); //创建文件对象,在当前目录
if(file.exists()) {
file.delete();
System.out.println("文件已删除");
}else{
try{ //try语句块捕捉可能出现的异常
file.createNewFile(); //在当前目录下创建文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace(); //
}
}
}
}

二,获取文件信息:都用特定方法获取文件的各类信息。

getName():获取文件的名称   length():获取文件的长度   getAbsolutePath():获取文件的绝对路径   getParent():获取文件的父路径   lastModified():获取文件最后修改时间

canread():判断是否可读   canwrite():判断是否可写   exits():判断是否存在   isFile():判断是否存在   isDirectory():判断是否是一个目录   isHidden():判断是否是隐藏文件

我们把上面创建和删除的例子稍微改一下:

public class FileTest {
public static void main(String[] args) { File file = new File("word.txt"); //创建文件对象,在当前目录
if(file.exists()) { //获取各类信息
String name = file.getName();
System.out.println("文件名称是:"+ name);
long length = file.length();
System.out.println("文件长度是:"+ length);
boolean hidden = file.isHidden();
System.out.println("文件是隐藏文件吗?"+ hidden);
String path = file.getAbsolutePath();
System.out.println("文件的绝对路径是:"+ path);
boolean read = file.canRead();
System.out.println("文件是否可读?"+ read);
}else{
try{ //try语句块捕捉可能的异常
file.createNewFile(); //创建文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace(); //
}
}
}
}

一,文件输入/输出流 :FileInputStream和FileOutputStream类

程序运行期间的大部分数据都在内存中进行操作,当程序结局了或者关闭后,这些数据都会消失。那么能不能把这些数据都永久的保存下来呢?

答案是肯定的:用文件输入/输出流与指定的文件建立连接,把数据永久性的保存到文件里。

FileInputStream和FileOutputStream类都用来操作磁盘文件。前者具有基本的文件写入能力,后者有基本的文件读取能力。

FileInputStream有两种构造方法:

1.FileInputStream(String name):使用给定的文件名name创建一个FileInputStream对象。

2.FileInputStream(File file):这个构造方法允许在把文件连接输入流之前对文件做进一步分析。

FileOutputStream类有前者相同的参数构造方法。注意到是:创建一个FileInputStream对象时,可以指定不存在的文件名,但此文件不能是一个已经被其他程序打开的文件。

注意:FileInputStream类和FileOutputStream类都只提供了对字节或字节数组的读取方法。汉字在文件中占用两个字节,所以读取不好会出现乱码。(所以下面提到的字符流比字节流更为简便)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class FileTest {
public static void main(String[] args) { File file = new File("word.txt"); //创建文件对象,在当前目录
try {
FileOutputStream out = new FileOutputStream(file);//创建FileOutputStream类对象
byte buy[] = "我有java课,在每周一的一二节。".getBytes();//创建数组存放字符串的二进制
out.write(buy); //把数组中的信息写入到文件里
out.close(); //把流关闭
}catch(Exception e){
e.printStackTrace();
}
try {
FileInputStream in = new FileInputStream(file);//创建FileIntputStream类对象
byte byt[] = new byte[1024]; //创建数组,定义内存大小
int len = in.read(byt); //获取写入信息的长度
System.out.println("文件中的信息是:"+ new String(byt, 0, len));//把文件中的信息输出
in.close(); //关闭流
}catch(Exception e){
e.printStackTrace();
}
}
}

虽然java在程序结束时自动关闭所有打开的流,但是当使用完流后,显示地(主动的)关闭所有打开的流是个好习惯。

二,FileReader和FileWriter类(字符流)

FileReader和FileWriter类 对应了FileInputStream和FileOutputStream类。FileReader流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余内容,直到源的末尾或流被关闭。

三,带缓存的输入/输出流:BufferInputStream和BufferOutputStream

缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip(), mark(), reset()等方法。

BufferInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。有两个构造方法:

1.BufferInputStream(InputStream in):创建一个带有32个字节的缓存区。

2.BufferInputStream(InputStream in, int size):按指定的大小创建缓存区。

从构造方法能看出来:BufferInputStream对象位于InputStream类对象之前。 所以字节数据读取文件的过程是:文件 –> InputStream –> BufferInputStream –> 目的地

一个最优的缓存区的大小取决于所在的操作系统,可用的内存空间,机器配置。

使用BufferOutputStream输出信息和OutputStream输出信息完全一样,不过BufferOutputStream有一个flush()方法来把缓存区的信息强制输出完。

1.BufferInputStream(InputStream in):创建一个带有32个字节的缓存区。

2.BufferInputStream(InputStream in, int size):按指定的大小创建缓存区。

2019-03-24         未完,  过两天补。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,896