java中的io流

Java中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象, 并不代表真实存在该⽂件。

1.File类

1.1属性

1.2构造方法

一个File对象就表示一个硬盘上的文件,

在构造方法时就需要将这个文件路径写进去

主要选择第二种

1.3方法

1.3.1返回文件信息

报错一般是程序怕传入的文件不存在

声明一下异常就行了

1.3.2对文件的判断和创建

import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        File file=new File("d:\\test.txt");
        //这个文件是不存在的
        //1.boolean exists()判断File对象描述的⽂件是否真实存在
        System.out.println(file.exists());
        //2.boolean isDirectory()判断File对象代表的⽂件是否是⼀个目录(是否是个文件夹)
        System.out.println(file.isDirectory());
        File file1=new File("d:");
        System.out.println(file1.isDirectory());
        //3.boolean isFile()判断File对象代表的⽂件是否是⼀个普通文件
        System.out.println(file.isFile());

        //4.boolean createNewFile()根据File对象,⾃动创建⼀个空⽂件,成功创建后返回true
        System.out.println(file.createNewFile());

        //1.boolean exists()判断File对象描述的⽂件是否真实存在
        System.out.println(file.exists());
        //2.boolean isDirectory()判断File对象代表的⽂件是否是⼀个目录(是否是个文件夹)
        System.out.println(file.isDirectory());
        //3.boolean isFile()判断File对象代表的⽂件是否是⼀个普通文件
        System.out.println(file.isFile());
        
        //5. boolean delete()根据File对象,删除该⽂件。成功删除后返回true
        System.out.println(file.delete());


    }
}

创建新文件,一开始是没有的

运行以后

删除文件运行以后

1.3.3对文件的删除

1.3.4对目录信息的获取

1.3.4对目录的创建

1.创建单个文件夹

2.创建多层文件夹

1.3.5对文件进行改名

程序执行之前

程序执行之后

注意不同类型之间的文件也能进行修改,也会将文件的类型进行改变

1.3.6对文件访问的权限

2.文件内容的读写--数据流

2.1字符流

2.1.1Reader

Reader是一个抽象类,不能new实例,只能new子类

read主要有三个方法

注意文件操作完记得对文件进行close

有可能前面的程序发生异常,后面的close就会执行不到,所以可以这样写

也可以这样

try with resources

这个语法目的就是

()中定义的变量

会在代码快结束时,自动地调用close方法(无论是正常进行还是抛出了异常)

2.1.1.1无参read

无参read(),一次就读取一个字符

结果

2.1.1.2char【】参数的read

系统会尽量读满这个数组,如果文件中的数据超出了数组的大小,就会重复的的填满这个数组。

三个参数的read,一次的去若干个字符,会把参数执行的cbuf数组中,中的从off这个位置开始,到len这个长度的范围,尽量填满

2.1.2FileWriter

创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。

构造方法

FileWriter(File file)

 FileWriter(File file, boolean append)

参数:

  • file:要写入数据的 File 对象。
  • append:如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则写入文件开始处。

2.2字节流

2.2.1InputStream 概述

2.2.1.1FileInputStream 概述

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

InputStream f = new FileInputStream("C:/java/hello");

File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);

下面这些就是返回的是ascii码值

2.2.2OutputStream概述 

2.2.2.1FileOutoutStream概述

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

1.使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("C:/java/hello")

2.也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);’

2.3缓冲流

2.3.1字节缓冲流

BufferedInputStream、BufferedOutputStream(缓冲字节流)

public class IOTest {

	public static void write(File file) throws IOException {
		// 缓冲字节流,提高了效率
		BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream(file, true));

		// 要写入的字符串
		String string = "综上所述,轮廓系数是一种有效的评估K-means聚类效果的度量指标。通过计算每个样本点的轮廓系数并取平均值,可以直观地了解聚类效果的好坏,并为优化聚类算法提供指导。";
		// 写入文件
		bis.write(string.getBytes());
		// 关闭流
		bis.close();
	}

	public static String read(File file) throws IOException {
		BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));

		// 一次性取多少个字节
		byte[] bytes = new byte[1024];
		// 用来接收读取的字节数组
		StringBuilder sb = new StringBuilder();
		// 读取到的字节数组长度,为-1时表示没有数据
		int length = 0;
		// 循环取数据
		while ((length = fis.read(bytes)) != -1) {
			// 将读取的内容转换成字符串
			sb.append(new String(bytes, 0, length));
		}
		// 关闭流
		fis.close();

		return sb.toString();
	}
}

2.3.2字符缓冲流

BufferedReader、BufferedWriter(字符缓冲流)

public class IOTest {
	
	public static void write(File file) throws IOException {
		// BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(new
		// FileOutputStream(file, true), "UTF-8"));
		// FileWriter可以大幅度简化代码
		BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));

		// 要写入的字符串
		String string = "Java 在 UNIX 和 Windows 自动按约定分辨文件路径分隔符。如果你在 Windows 版本的 Java 中使用分隔符 (/) ,路径依然能够被正确解析。";
		bw.write(string);
		bw.close();
	}

	public static String read(File file) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader(file));
		// 用来接收读取的字节数组
		StringBuilder sb = new StringBuilder();

		// 按行读数据
		String line;
		// 循环取数据
		while ((line = br.readLine()) != null) {
			// 将读取的内容转换成字符串
			sb.append(line);
		}
		// 关闭流
		br.close();

		return sb.toString();
	}
}
### 回答1: Java中的IO操作基本程如下: 1. 创建对象:通过File类或其他相关类创建输入或输出对象。 2. 打开:使用输入或输出对象的open()方法打开,这样就可以读取或写入数据。 3. 读取或写入数据:使用输入或输出对象的read()或write()方法读取或写入数据。 4. 关闭:使用输入或输出对象的close()方法关闭,释放资源。 需要注意的是,在使用IO操作时,要遵循“先打开、后关闭”的原则,以确保数据的完整性和的正确性。同时,在操作过程中也需要进行异常处理,以避免出现不必要的错误。 ### 回答2: Java中的IO基本操作程如下: 1. 打开文件或者建立网络连接:使用File类或者URL类打开文件或者建立网络连接。 2. 创建对象:根据需要选择输入(读取数据)或输出(写入数据),并创建相应的对象。常见的输入有FileInputStream、BufferedReader等,常见的输出有FileOutputStream、BufferedWriter等。 3. 读取或写入数据:使用对象读取或写入数据。对于输入,可以通过调用相关方法(如read()、readline()等)逐个字符或逐行读取数据;对于输出,可以通过调用相应方法(如write()、print()等)逐个字符或逐行写入数据。 4. 关闭:读取或写入完成后,需要关闭文件或网络连接,以释放资源。可以调用对象的close()方法来关闭。 需要注意的是,在处理IO时,应该始终使用try-catch-finally块,以确保在发生异常时能够正确关闭。可以把IO操作放在try块中,catch块用于捕获异常,并在finally块中关闭。 另外,为了提高IO效率,可以考虑使用缓冲来进行读写操作。缓冲(BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter)可以通过缓冲区将数据从源读入到缓冲区中,再从缓冲区写入到目标中,提高读写的速度。 以上就是JavaIO基本操作的程。根据实际需要选择合适的对象,并遵循打开、读取/写入、关闭的程,可以实现灵活、高效的IO操作。 ### 回答3: 在Java中,IO是用于处理输入输出操作的工具。下面是JavaIO的基本操作程: 1. 创建对象:通过使用Java中的InputStream和OutputStream类来创建对象。InputStream类用于读取输入,而OutputStream类用于写入输出。 2. 打开:通过使用对象对应的构造函数和方法来打开输入和输出。根据具体情况,可以选择文件、网络或内存来打开。 3. 读取/写入数据:使用对象提供的读取和写入方法来读取和写入数据。例如,使用InputStream的`int read()`方法来读取一个字节的数据,使用OutputStream的`void write(int b)`方法来写入一个字节的数据。 4. 关闭:在读取或写入结束后,必须关闭以释放相关资源。通过调用对象的`close()`方法来关闭。 需要注意的是,在处理异常的时候,我们需要对可能出现的`IOException`进行处理。可以使用try-catch语句块来捕获和处理异常。 程示例: ```java import java.io.*; public class IOExample { public static void main(String[] args) { try { // 1. 创建对象 FileInputStream fis = new FileInputStream("input.txt"); FileOutputStream fos = new FileOutputStream("output.txt"); // 2. 打开 // 3. 读取/写入数据 int data; while ((data = fis.read()) != -1) { fos.write(data); } // 4. 关闭 fis.close(); fos.close(); } catch(IOException e) { e.printStackTrace(); } } } ``` 上述示例中,我们创建了一个用于将一个文件中的内容拷贝到另一个文件中的程序。首先,我们创建了一个FileInputStream对象来读取输入文件的内容,然后创建了一个FileOutputStream对象来写入输出文件。接下来,我们通过循环从输入中读取一个字节的数据,并将其写入到输出中,直到读取完所有的数据。最后,我们关闭了对象来释放资源。 这就是JavaIO的基本操作程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值