java--IO流
程序员文章站
2022-05-03 23:41:33
1、File类(文件)一个File类对象可以表示具体的一个文件。(1)创建文件创建文本文件:如果文件不存在则创建,存在则创建失败;创建单个文件夹:同上;创建多级文件夹:同上。import java.io.File;import java.io.IOException;public class Filedemo1 { public static void main(String[] args) { try { File file=new Fil...
1、File类(文件)
一个File类对象可以表示具体的一个文件。
(1)创建文件
创建文本文件:如果文件不存在则创建,存在则创建失败;
创建单个文件夹:同上;
创建多级文件夹:同上。
import java.io.File;
import java.io.IOException;
public class Filedemo1 {
public static void main(String[] args) {
try {
File file=new File("D:\\AI\\x9504.txt");
boolean flag1=file.createNewFile();//创建一个新的普通文件
System.out.println(flag1?"创建成功":"创建失败");
//创建一个文件夹
File file1=new File("D:\\AI\\x9505_java");
boolean flag2=file1.mkdir();
System.out.println(flag2?"文件夹创建成功":"文件夹创建失败");
//上述两个方法 createNewFile 、mkdir 文件(夹)存在则不创建新的 不存在才会创建
//创建多级文件
File file2=new File("D:\\AI\\x9504_java\\html");
boolean flag3=file2.mkdirs();
System.out.println(flag3?"多级文件夹创建成功":"多级文件夹创建失败");
}catch (IOException e){
e.printStackTrace();
}
}
}
(2)删除文件
import java.io.File;
public class Filedemo2 {
public static void main(String[] args) {
File file1=new File("D:\\AI\\x9504.txt");
boolean flag1=file1.delete();
System.out.println(flag1?"删除成功":"删除失败");
}
}
(3)查询文件
判断指定路径名的文件是否存在;
获取文件的大小;
获取文件名;
获取文件路径。
String字符串:length(),是方法,返回字符串中字符的个数;
数组: 数组名.length 是属性,获取数组中元素的个数;
集合: 集合对象名.size()是方法,返回集合中元素的个数;
文件:文件名.length() 是方法,返回文件中的 字节数 文件的大小。
类名.方法名
import java.io.File;
import java.io.IOException;
public class Filedemo2 {
public static void main(String[] args) {
try {
// File file1=new File("D:\\AI\\x9504.txt");
// boolean flag1=file1.delete();
// System.out.println(flag1?"删除成功":"删除失败");
File file1=new File("D:\\AI\\x9504");
boolean flag1=file1.exists();//判断某个文件(夹)是否存在
if(flag1){
System.out.println("您的文件已经存在不需要创建");
}else {
file1.mkdir();
}
//获取文件的大小 字节
File file2=new File("D:\\AI\\x9505.txt");
file2.createNewFile();
long leg=file2.length();
System.out.println("size="+leg);
//返回文件名 和文件路径
String filename=file2.getName();
System.out.println("filename="+filename);
String path=file2.getPath();
System.out.println(path);
String path1=file2.getAbsolutePath();
System.out.println(path1);
}catch (IOException e){
e.printStackTrace();
}
//
}
}
(4)递归
递归:方法自己调用自己(易出现死循环,所以要控制好基础条件)。
isDirectory() 判断文件是否是文件夹
listFiles() 查询某个文件夹下的所有文件
/**
*递归 找出某个文件夹下的所有文件
*/
import java.io.File;
public class FileDemo3 {
public static void showFile(String pathname){
File file1=new File(pathname);
//判断文件是否是文件夹
boolean flag1=file1.isDirectory();
if(flag1){//是文件夹
//选择某个文件夹下所有文件
File[] files=file1.listFiles();
//for(数据类型 变量名:数组/集合)
for(File tempfile:files){
boolean flag2=tempfile.isDirectory();
if(flag2){
showFile(tempfile.getPath());
}else {
String filepath=tempfile.getPath();
System.out.println("普通文件:"+filepath);
}
}
}else {
System.out.println("文件不是文件夹");
String filepath=file1.getPath();
System.out.println("普通文件:"+filepath);
}
}
public static void main(String[] args) {
FileDemo3.showFile("D:\\AI\\工作报告");
}
}
2、IO流:输入输出流
1、字节流: 可以读取一切文件。
- 字节输入流:从键盘\文本文件读入程序
- InputStream(字节输入流祖宗类)
FileInputStream(子类 文件字节输入流)
BufferedInputStream(子类 字节缓冲输入流) - 字节输出流:从程序输出的
- OutputStream
FileOutputStream
BufferedOutputStream
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class FileInputStream_demo1 {
public static void main(String[] args) {
try{
//input 读 从文件读入程序
//FileInputStream fis=new FileInputStream("D:\\AI\\x9505.txt");
File file=new File("D:\\AI\\x9505.txt");
if(file.exists()&&file.length()>0) {
//文件字节输入流 从文件一个字节一个字节读数据 读中文乱码 中文字符至少占2个字节
FileInputStream fileInputStream = new FileInputStream(file);
// int ch = fileInputStream.read();
//返回值-1 代表读到头了
// System.out.println((char)ch);
int ch=0;
while ((ch=fileInputStream.read())!=-1){
System.out.println((char)ch);
}
//3、关闭流
fileInputStream.close();
}
}
catch (Exception e){
System.out.println("FileNotFoundException");
}
}
}
import java.io.FileOutputStream;
public class FileOutputStream_demo2 {
public static void main(String[] args) {
try {
//output 写 从程序写入文件里
String data="hello html,hello ps";
FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt");
//字符串变字节数组
byte[] bytes=data.getBytes();
//如果文件不存在则会自动创建 存在则清空文件在写入(覆盖)
//FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt",true);追加
//如果append参数为true咋追加,否则覆盖。
fos.write(bytes);
fos.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class IO_demo3 {
public static void main(String[] args) {
try {
FileInputStream fis=new FileInputStream("D:\\AI\\x9505.txt");
FileOutputStream fos = new FileOutputStream("D:\\AI\\x9504.txt");
int ch=0;
while ((ch=fis.read())!=-1){
fos.write(ch);
}
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.*;
public class demo2 {
public static void main(String[] args) {
try {
long startTime=System.currentTimeMillis();
InputStream fis=new FileInputStream("D:\\AI\\x9504.txt");
OutputStream fos=new FileOutputStream("D:\\AI\\x9505.txt");
BufferedInputStream bis =new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte[] car=new byte[1024];
int len=0;
while((len=bis.read(car))!=-1){
//System.out.println(len);
bos.write(car,0,len);
}
bis.close();
bos.close();
long endTime=System.currentTimeMillis();
System.out.println("spend time:"+(endTime-startTime)+"ms");
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、字符流: 读取纯文本文件比较方便,已经帮我们处理的中文乱码问题。
- FileReader 字符输入流
- FileWriter 字符输出流
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
public class ReaderDemo {
public static void main(String[] args) {
// "D:\\AI\\x9504.txt"
try {
FileReader fr = new FileReader("D:\\\\AI\\\\x9504.txt");
FileWriter fw = new FileWriter("D:\\\\AI\\\\x9505.txt");
char[] car=new char[1024];
int len=0;
while((len=fr.read(car))!=-1){
//char数组转字符串
// String string = new String(car,0,len);
// System.out.println(string);
fw.write(car);
//fw.write(string);
}
fr.close();
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文地址:https://blog.csdn.net/weixin_39274067/article/details/109559748