Java——IO总结

Java——IO总结

1.文件

package day21.io;

 

import java.io.File;

import java.io.IOException;

import java.util.Date;

 

public class FileDemo {

public static void main(String[] args) throws IOException {

//1.拼接字符串路径C:\\Users\\Administrator\\Desktop\\

String path="我曾是少年.docx";

//2.将字符串路径转换成File对象

File file=new File(path);

//File file1=new File("C:\\Users\\Administrator\\Desktop", "我曾是少年.docx");

//File file2=new File(new File("C:\\Users\\Administrator\\Desktop"), "我曾是少年.docx");

//3.读取文件属性信息

//读取文件名称

System.out.println("文件名称:"+file.getName());

//获取文件绝对路径、相对路径

System.out.println("绝对路径:"+file.getAbsolutePath());

System.out.println("相对路径:"+file.getPath());

System.out.println("父目录:"+file.getParent());

System.out.println("文件分区大小:"+file.getTotalSpace());//返回的是字节

System.out.println("所在空间可用空间:"+file.getFreeSpace());

System.out.println("判断文件是否存在:"+file.exists());

System.out.println("判断文件是否为绝对路径:"+file.isAbsolute());

System.out.println("判断文件是不是一个文件:"+file.isFile());

System.out.println("判断当前文件是否是隐藏文件:"+file.isHidden());

System.out.println("判断当前文件是否可执行:"+file.canExecute());

System.out.println("判断当前文件是否可读:"+file.canRead());

System.out.println("判断当前文件是否可写:"+file.canWrite());

System.out.println("抽象路径的哈希码:"+file.hashCode());

System.out.println("文件的上次修改时间:"+file.lastModified());

Date d=new Date(file.lastModified());

System.out.println(d);

System.out.println("文件的大小"+file.length());

//System.out.println(file.list());

//文件重命名

//file.renameTo(new File("名字.后缀名"));

 

File file1=new File("C:\\Users\\Administrator\\Desktop");

//创建目录

//System.out.println(file1.mkdir());//只能创建当前目录,不能创建父目录

//System.out.println(file.mkdirs());//创建当前目录的同时,如果父目录不存在,会创建父目录

//列出当前系统盘符

System.out.println("-------------------------");

File[]roots=File.listRoots();

for (File file2 : roots) {

System.out.println(file2);

}

//列出所有的文件名

System.out.println("------------------------------");

if (file1.exists()&&file1.isDirectory()) {

String[]name=file1.list();

for (String string : name) {

System.out.println(string);

}

}

//列出所有的文件对象

System.out.println("-----------------------------------");

if (file1.exists()&&file1.isDirectory()) {

File[]result=file1.listFiles();

for (File file2 : result) {

System.out.println(file2);

}

}

//打印当前目录下所有层级的文件信息

System.out.println("---------------------------------");

listAllFileInfo(file);

/*System.out.println("删除-------------------");

File file2=new File("C:\\Users\\Administrator\\Desktop\\111.txt");

file2.createNewFile();//创建新的文件

file2.delete();//立即删除

file2.deleteOnExit();//当虚拟机停止后删除

*/ }

//打印当前目录下所有层级的文件信息

public static void listAllFileInfo(File file) {

if (file.isDirectory()) {//测试此抽象路径名表示的文件是否为目录

File[]files=file.listFiles();

for (File file2 : files) {

//递归

listAllFileInfo(file2);

}

}else {

System.out.println(file);

}

}

}

输出结果:

1.1练习题

package day22.test;

 

import java.io.File;

import java.io.IOException;

 

public class FileTest {

public static void main(String[] args) throws IOException {

File file=new File("C:\\Users\\Administrator\\Desktop");

printAllFileInfo(file);

//对文件后缀名为txt的文件进行显示输出

System.out.println("-------------------------");

/*File []file4=File.listRoots();

for (File file2 : file4) {

printTxt(file2);

}*/

printTxt(file);

//批量修改文件名称

/*System.out.println("---------------------------");

File file1=new File("C:\\Users\\Administrator\\Desktop\\test\\one");

file1.mkdirs();

if (file1.isDirectory()&&file1.exists()) {

file1=new File(file1.getAbsoluteFile(),"123.java");

file1.createNewFile();

file1=new File(file1.getParent(),"123.txt");

file1.createNewFile();

}

File file2=new File("C:\\Users\\Administrator\\Desktop\\test\\two");

file2.mkdirs();

if (file2.isDirectory()&&file2.exists()) {

file2=new File(file2.getAbsoluteFile(),"123.java");

file2.createNewFile();

file2=new File(file2.getParent(),"123.txt");

file2.createNewFile();

}*/

//创建文件夹和文件

File file3=new File("C:\\Users\\Administrator\\Desktop\\test");

editManyName(file3);

}

//列出当前目录下的所有文件和子目录文件

public static void printAllFileInfo(File file) {

if (file.isDirectory()) {

File []lists=file.listFiles();

if (lists==null) {

return;

}

for (File file1 : lists) {

printAllFileInfo(file1);

}

}else {

System.out.println(file.getName());

}

}

//对文件后缀名为txt的文件进行显示输出

public static void printTxt(File file) {

if (file.isDirectory()) {

File []lists=file.listFiles();

if (lists==null) {

return;

}

for (File file2 : lists) {

printTxt(file2);

}

}else {

if (file.getName().endsWith(".txt")) {

System.out.println(file.getName());

}

/*String regex="\\w+.txt";

boolean r=file.getName().matches(regex);

if(r) {

System.out.println(file.getName());

}*/

}

}

//批量修改文件名称

public static void editManyName(File file) {

if (file.isDirectory()) {

File []lists=file.listFiles();

if (lists==null) {

return;

}

for (File file2 : lists) {

editManyName(file2);

}

}else {

 

if (file.getName().matches("\\d+.txt")) {

file.renameTo(new File(file.getParent(), "456.txt"));

}else {

file.renameTo(new File(file.getParent(),"456.java"));

}

}

}

}

输出结果:

2.IO流

2.1字节流输入

package day22.stream;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

 

//输入流  将程序外部的数据,存储到内存中

public class FileInputStreamDemo {

public static void main(String[] args) throws IOException {

//1.创建一个输入字节流对象,关联要操作的文件,打开流

//1.1声明文件路径

String path="C:\\Users\\Administrator\\Desktop\\test\\111.txt";

//1.2初始化输入流对象

//FileInputStream input=new FileInputStream(new File(path));

FileInputStream input=new FileInputStream(path);

//2.读取操作

//2.1查看流中剩余字节

System.out.println(input.available());

//2.2读取一个字节

System.out.println(input.read());//assic码值

System.out.println(input.available());

//byte[]b=new byte[input.available()];//声明缓存区,不建议使用,如果文件太大,系统可能会崩溃

//int len=input.read(b);//将流中的数据读取到byte数组中,返回的是本次接受的长度

//System.out.println(len);

byte[]b=new byte[5];

//读取长度==-1,说明已经读取到文件的尾部

int len=0;

while ((len=input.read(b))!=-1) {

//从b数组中处理接受的数据

String tmp=new String(b,0,len,"GBK");

System.out.print(tmp);

}

//System.out.println();

//System.out.println(input.read(b));

//System.out.println(input.available());

//3.关闭流

input.close();

}

}

输出结果:

2.2字节流输出

package day22.stream;

 

import java.io.FileOutputStream;

import java.io.IOException;

//输出流:将计算机内存中的数据,写入到一个指定的文件中,或发送到网络

public class FileOutputStreamDemo {

public static void main(String[] args) throws IOException {

//1创建一个输出流并关联文件,自动打开流

//1.1声明一个文件路径

String path="C:\\Users\\Administrator\\Desktop\\test\\222.txt";

//1.2创建一个输出流对象 boolean类型代表追加或者不追加

//FileOutputStream output=new FileOutputStream(path);//每次内容会被覆盖

FileOutputStream output=new FileOutputStream(path,false);//代表追加

//2将内存中的数据,写入到一个指定的文件中

//2.1将数据写入流中

String str="你好!qqqqqqqqqqqqq";

//2.2将String类型转换成byte数组

byte[]b=str.getBytes("UTF-8");

//2.3写操作

output.write(b);

//output.write(b, 0, b.length);//将b数组中从0开始,数组的长度,写入到文件中

//output.write(12);//单一写入一个字节

//3强制刷入流中的数据到文件中

output.flush();

//4关闭流

output.close();

}

}

输出结果:

2.3练习题

package day22.stream;

 

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

//复制文件

public class StreamDemoTest {

public static void main(String[] args) throws IOException {

//声明文件路径

String path1="C:\\Users\\Administrator\\Desktop\\test\\111.txt";

String path2="C:\\Users\\Administrator\\Desktop\\test\\one\\111.txt";

//创建输入流对象,关联文件

FileInputStream input=new FileInputStream(path1);

//创建输出流对象,并关联文件

FileOutputStream output=new FileOutputStream(path2);

//读取文件

byte[]b=new byte[10];

int len=0;

while ((len=input.read(b))!=-1) {

//处理数据

output.write(b,0,len);

}

//将数据强制刷入流中

output.flush();

//关闭流

input.close();

output.close();

}

}

输出结果:

3.知识框架

 

猜你喜欢

转载自blog.csdn.net/qq_41534115/article/details/81673116