java file 删除字节_java之 File类 & 字节流(byte)

0x01、File类

File类主要用于文件和目录创建、查找、删除等操作的。

1、file类的构造方法

public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。

public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

2、常用方法:

public String getAbsolutePath() :返回此File的绝对路径名字符串。

public String getPath() : 将此File转换为路径名字符串。

public String getName() : 返回由此File表示的文件或目录的名称。

public long length() : 返回由此File表示的文件的长度。

代码示例:

public static void main(String[] args) {

String Pathname = "C:\\Users\\86183\\Desktop\\a.txt";

File abc = new File(Pathname);

System.out.println(abc.getAbsolutePath());

String Pathname1 = "C:\\Users\\86183\\Desktop\\a.txt";

File abc1 = new File(Pathname1);

System.out.println(abc1.getAbsolutePath());

System.out.println(abc1.getPath());

System.out.println(abc1.length());

}

3、判断方法

public boolean exists() : 此File表示的文件或目录是否实际存在。

public boolean isDirectory() :此File表示的是否为目录。

public boolean isFile() : 此File表示的是否为文件。

代码示例:

public static void main(String[] args) {

String Pathname = "C:\\Users\\86183\\Desktop\\artifact.exe";

File abc = new File(Pathname);

boolean a = abc.exists();

System.out.println(a);

System.out.println(abc.isFile());

System.out.println(abc.isDirectory());

}

4、增删功能方法

public boolean createNewFile() :当前仅当具有该名称的文件尚不存在时,创建一个新的空文件。

public boolean delete() :删除由此File表示的文件或目录。

public boolean mkdir() :创建由此File表示的目录。

public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

public static void main(String[] args) throws IOException {

String Pathname = "a.txt";

File abc = new File(Pathname);

boolean file = abc.createNewFile();

System.out.println(file+"\n"+abc.getAbsolutePath());

File abc1 = new File("abc");

abc1.mkdir();

File abc2 = new File("abc\\abc");

abc2.mkdirs();

}

如果是对目录进行删除,删除的目录必须为空才能进行删除。

5、目录遍历

在file里面给我们提供了,可以直接获取file目录下面所有子文件或目录。

public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

public static void main(String[] args) throws IOException {

String Pathname = "../";

File abc = new File(Pathname);

String[] name = abc.list();

for (String s : name) {

System.out.println(s);

}

}

使用list方法获取所有文件,然后使用增强for循环进行遍历。

0x02、字节流

I : Input 输入 从其他存储设备读数据到内存中就是输入

O : Output 输出 从内存中写数据到其他存储设备

68a62f84ecdfbb402afa0dfafcd93c51.png

根据数据的流向分为:输入流和输出流。

输入流 :把数据从其他设备上读取到内存中的流。

字节输入流:以字节为基本单位,读数据

字符输入流:以字符为基本单位,读数据

输出流 :把数据从内存 中写出到其他设备上的流。

字节输出流:以字节为基本单位,写出数据

字符输出流:以字符为基本单位,写出数据

1、字节输出流

OutputStream抽象类是字节输入流的超类,他定义了几个共性的方法。

public void close():关闭此输出流并释放与此流相关联的任何系统资源。

public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。

public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。

public abstract void write(int b) :将指定的字节输出流。

close方法,当完成流的操作时,必须调用此方法,释放系统资源。

(1)、FileOutputStream类

FileOutputStream类是文件输出流,用于将数据些出到文件当中。

查看构造方法:

public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。

public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件。

​如果创建一个io流的对象,必须传入文件的路径,,如果没有该文件就会创建该文件,如果有就会清空原本有的数据。

代码:

public static void main(String[] args) throws IOException {

File file = new File("a.txt");

FileOutputStream FileoutDate = new FileOutputStream(file);

FileoutDate.write(97);

FileoutDate.close();

}

​这里写进入一个97,但是打开文件会发现写进入的变成了a,这是因为我们这里是以byte形式进行写入的,,而97的ascii转换为字符后,就是a这个字符。

​这里还可以指定写出的数据长度

Public class FileOutput {

public static void main(String[] args) throws IOException {

File file = new File("a.txt");

FileOutputStream FileoutDate = new FileOutputStream(file);

byte[] b = "abce3".getBytes();

FileoutDate.write(b,2,2);

FileoutDate.close();

}

}

这里要先获取字符的字节类型数据,使用write写入,从第二位开始索引,写入2个字节。

在程序开发中,有些数据可能没法一次执行获取所有结果,这时候我们如果以上面的方式来循环写入运行结果的话,每次循环就都会被清空一次,只获得最后一次的执行结果。那么这时候我们就可以使用到追加,把它追加进入,而不是直接覆盖重写。

public FileOutputStream(File file, boolean append) : 创建文件输出流以写入由指定的 File对象表示的

文件。

public FileOutputStream(String name, boolean append) : 创建文件输出流以指定的名称写入文件。

代码

public static void main(String[] args) throws IOException {

File file = new File("a.txt");

FileOutputStream FileoutDate = new FileOutputStream(file,true);

byte[] b = "abce3".getBytes();

FileoutDate.write(b,2,2);

FileoutDate.close();

}

几行代码和前面的相同,只是在FileOutputStream 构造方法里面传入一个ture,表示使用追加模式,该模式默认为false。

2、字节输入流

InputStream抽象类是字节输入流的超类。可以读取字节数据到内存中。

public void close() :关闭此输入流并释放与此流相关联的任何系统资源。

public abstract int read() : 从输入流读取数据的下一个字节。

public int read(byte[] b) : 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。

(1)、FileInputStream 类

​FileInputStream是文件输入流,从文件中读取字节到内存中。

​构造方法:

FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系

统中的 File对象 file命名。

FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件

系统中的路径名 name命名。

代码:

public static void main(String[] args) throws IOException {

File file = new File("a.txt");

FileInputStream fileinputdata = new FileInputStream(file);

int read = fileinputdata.read();

System.out.println((char) read);

read = fileinputdata.read();

System.out.println((char) read);

read = fileinputdata.read();

System.out.println(read);

fileinputdata.close();

}

使用read方法读取完后,地址会往后推一位,知道读取到没有,会返回-1。

以上的方法都是读取单个字节,我们可以定义一个字节类型的数值,然后让他每次读取我们指定的长度。

代码:

public static void main(String[] args) throws IOException {

File file = new File("a.txt");

FileInputStream fileinputdata = new FileInputStream(file);

int len;

byte[] b = new byte[2];

while ((len=fileinputdata.read(b))!=-1){

System.out.println(new String(b,0,len));

}

fileinputdata.close();

}

这里定义了b变量用来接收每次读取的数据产的长度,然后定义一个len变量,接收每次读取的数据,这里可以直接把赋值放在循环条件里面,如果赋值的变量不等于-1,就一直循环,知道读取到-1,停止循环,前面说到如果没有数据读取会输出返回一个-1,结束循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值