本文共 4543 字,大约阅读时间需要 15 分钟。
一.文件
- 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;/** * @author sunyong * @date 2020/06/28 * @description * 创建文件 * 获取文件信息 * 删除文件 */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;//1)导入相关类import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * @author sunyong * @date 2020/06/28 * @description * 字节输入输出流 * 实现文件复制(读写) */public class Copy { public static void main(String[] args) { //2)构造对象 FileInputStream fis=null; FileOutputStream fos=null; try { fis = new FileInputStream("D:/我的青春谁做主.txt"); fos = new FileOutputStream("D:/sunyong/test.txt",true);//true表示追加,false表示覆盖 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(); } //4)关闭流 finally { try { fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } }}
注:接IO流/输入输出流(下):
转载地址:http://odjxi.baihongyu.com/