一.文件
- 1.文件的概念:相关记录或放在一起的数据的集合
- 2.Java程序访问文件方式-->java.io.File类
- 3.创建文件对象:
File file = new File(String path);
- 4.File类常用的方法如下:
方法名 | 说明 |
---|
boolean exists( ) | 判断文件或目录是否存在 |
boolean isFile( ) | 判断是否是文件 |
boolean isDirectory( ) | 判断是否是目录 |
String getPath( ) | 返回此对象表示的文件的相对路径名 |
String getAbsolutePath( ) | 返回此对象表示的文件的绝对路径名 |
String getName( ) | 返回此对象表示的文件或目录的名称 |
boolean delete( ) | 删除此对象指定的文件或目录 |
boolean createNewFile( ) | 创建名称的空文件,不创建文件夹 |
long length() | 返回文件的长度,单位为字节, 如果文件不存在,则返回 0L |
- 5.练习:实现查看文件属性、创建和删除文件功能,具体代码如下:
package InputOutput;
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void create(File file){
if(!file.exists()){
try {
file.createNewFile();
System.out.println("文件已创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void showInfo(File file){
if(file.exists()){
if(file.isFile()){
System.out.println("文件名称:"+file.getName());
System.out.println("相对路径:"+file.getPath());
System.out.println("绝对路径:"+file.getAbsolutePath());
System.out.println("字节数:"+file.length());
}
if(file.isDirectory()){
System.out.println("这是目录!");
}
}else {
System.out.println("不存在");
}
}
public static void delete(File file){
if(file.exists()){
file.delete();
System.out.println("文件已经被删除!");
}
}
public static void main(String[] args) {
File file = new File("test.txt");
FileDemo.create(file);
FileDemo.showInfo(file);
FileDemo.delete(file);
}
}
- 6.效果如下:
二.流
- 1.什么是流?
- 流是一组有序的数据序列,以先进先出方式发送信息的通道.
- 2.Java流的分类
- 1)按流向分类:
- 输入流: InputStream和Reader作为基类
- 输出流:OutputStream和Writer作为基类
- 2)按处理数据单元分类:
- 字节流:InputStream字节输入流和OutputStream字节输出流作为基类
- 字符流:Reader字符输入流和Writer字符输出流作为基类
(一)字节输入流
方法 | 说明 |
---|
int read( ) | 从输入流按字节读,返回的是该字节的整数表示形式 ,读到流的末尾返回-1 |
int read(byte[] b) | 从输入流读取若干字节,保存到数组b中,返回的是读取到的字节数 ,读到流的末尾返回-1 |
int read(byte[] b,int off,int len) | 从输入流读取若干字节,保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len表示读取的字节数,返回的是实际读取到的字节数 ,读到流的末尾,返回-1 |
void close( ) | 关闭输入流 |
int available() | 可以从输入流中读取的字节数目 |
- 2.子类FileInputStream常用的构造方法
- 1)FileInputStream(File file)
- 2)FileInputStream(String name)
- 3.使用FileInputStream 读文本文件的步骤
说明 | 代码举例 |
---|
1.导入相关类 | import java.io.IOException; timport java.io.FileInputStream; |
2.构造对象 | FileInputStream fis= new FileInputStream(“test.txt”); |
3.读取数据 | fis.available(); fis.read(); |
4.关闭流 | fis.close(); |
(二)字节输出流
方法 | 说明 |
---|
void write(int c) | 往输出流写入一个个字节 |
void write(byte[] buf) | 往输出流写入一个字节数组 |
void write(byte[] b,int off,int len) | 往输出流中写入一个字节数组,off代表开始从字节数组的off位置开始往输出流写,len代表往外写len长度的字节 |
void close() | 关闭输出流 |
void flush() | 强制把缓冲区的数据写到输出流中 |
- 2.子类FileOutputStream常用的构造方法
- 1)FileOutputStream(File file)
- 2)FileOutputStream(String name)
- 3)FileOutputStream(String name,boolean append)
- 3.使用FileOutputStream 写文本文件的步骤
说明 | 代码举例 |
---|
1.导入相关类 | import java.io.IOException; import java.io.FileOutputStream; |
2.构造对象 | FileOutputStream fos= new FileOutputStream(“test.txt”); |
3.写入数据 | String str =“好好学习Java”;byte[] words = str.getBytes();fos.write(words, 0, words.length); |
4.关闭流 | fos.close(); |
观察输入流和输出流的步骤可发现其实步骤基本一样,只不过一个是读,一个是写
(三)练习:请用字节输入输出流复制一个文本文件
- 思路分析: 复制其实就是把读写整合在一起,在读的时候将其写入在另一个文件即可完成复制,具体代码如下
package InputOutput;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Copy {
public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis = new FileInputStream("D:/我的青春谁做主.txt");
fos = new FileOutputStream("D:/sunyong/test.txt",true);
int length=fis.available();
byte[] words = new byte[length];
int data;
while ((data=fis.read(words))!=-1){
fos.write(words,0,length);
}
System.out.println("文件复制完毕!");
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
注:接IO流/输入输出流(下):点我进入