目录
1: File类:
File类是Java中用于表示文件和目录路径名的抽象表示的类。
1.1: File类的主要特点:
1:表示文件和目录:file类可以表示文件和目录路径名,并提供了操作这些文件和目录的方法。
2:基本操作方法:file类提供了一系列方法用于执行文件和目录操作,如创建,删除,重命名,检查存在性等。
3:获取文件信息:可以通过File类获取文件的信息,包括文件大小,修改时间,文件名等。
4:目录操作:除了文件操作,File类也可以用于操作目录,包括列出目录中的文件列表,创建新目录,删除目录等。
1.2: 主要方法和用法:
1.构造方法:File类有多个构造方法,可以传入文件路径字符串或者文件路径名构造File对象。
2.文件操作方法:
createNewFile()
:创建新文件。delete()
:删除文件或目录。renameTo(File dest)
:重命名文件或目录。exists()
:检查文件或目录是否存在。
3.获取文件信息方法:
getName()
:获取文件名。length()
:获取文件大小。lastModified()
:获取文件最后修改时间等。
4.目录操作方法:
list()
:列出目录中的文件列表。mkdir()
:创建新目录。delete()
:删除目录。
2:Stream流:
在Java中,数据流(Stream)是一种用于处理输入/输出操作的抽象概念。数据流可以看作是字节或字符的序列,通过流可以实现数据在程序之间的传输。在Java中,主要有字节流和字符流两种类型的数据流。
2.1:字节流(Byte Stream):
InputStream:用于从源读取数据的抽象类。
OutputStream:用于想目标写入数据的抽象类
// 读取文件内容
try (InputStream inputStream = new FileInputStream("input.txt")) {
int data = inputStream.read();
while (data != -1) {
System.out.print((char) data);
data = inputStream.read();
}
} catch (IOException e) {
e.printStackTrace();
}
// 写入文件内容
try (OutputStream outputStream = new FileOutputStream("output.txt")) {
String str = "Hello, Java Streams!";
byte[] data = str.getBytes();
outputStream.write(data);
} catch (IOException e) {
e.printStackTrace();
}
2.2:字符流(Character Stream):
- Reader:用于读取字符流的抽象类。
- Writer:用于写入字符流的抽象类。
// 读取文件内容
try (Reader reader = new FileReader("input.txt")) {
int data = reader.read();
while (data != -1) {
System.out.print((char) data);
data = reader.read();
}
} catch (IOException e) {
e.printStackTrace();
}
// 写入文件内容
try (Writer writer = new FileWriter("output.txt")) {
String str = "Hello, Java Streams!";
writer.write(str);
} catch (IOException e) {
e.printStackTrace();
}
2.3:字节流和字符流的区别:
字节流和字符流在Java中的区别主要体现在数据的处理方式和适用场景上。
-
数据处理方式:
- 字节流(Byte Stream)以字节为单位进行读写操作,可以处理字节数据(二进制数据),例如图片、音频、视频等。
- 字符流(Character Stream)以字符为单位进行读写操作,可以处理文本数据,对于处理字符数据更加方便。
-
字符编码:
- 字节流是以字节为单位进行读写,不考虑字符编码,只是简单地传输字节数据,无法读取中文字符。
- 字符流在读写字符时,会根据指定的字符编码进行字符与字节之间的转换。例如,使用UTF-8编码进行读写操作时,字符流会自动将字符转换成对应的字节序列。
-
适用场景:
- 字节流适用于处理二进制数据,例如文件的复制、网络传输等。
- 字符流适用于处理文本数据,例如读取、写入文本文件、处理字符串等。
选择使用字节流还是字符流,需要根据具体的使用场景和数据类型来决定:
- 如果需要处理二进制数据(如图像、音频、视频等),或者直接读取/写入字节流的数据(如网络传输),则应该使用字节流。
- 如果需要处理文本数据(如读取/写入文本文件、处理字符串等),并且需要考虑字符编码的转换,则应该使用字符流。
此外,Java中提供了字符流和字节流之间的桥梁类,可以方便地进行流之间的转换:
- InputStreamReader和OutputStreamWriter:用于将字节流转换为字符流。
- FileInputStream和FileOutputStream:用于将字符流转换为字节流。
需要根据具体需求选择合适的数据流类型,以实现数据的有效处理。