Java中的输入输出流(一)

Java中的输入输出流

输入输出流---对文件进行读【打开】写【修改】操作的java类库。

文件---把数据持久化到磁盘的载体

---文件的组成

  1. 文件的属性【文件名称,文件大小,文件类型,创建时间.....】
  2. 文件内容【输入输出流

我们要想通过java提供的输入输出流读写文件中的内容就得先学会操作文件。

Java中为我们提供了一个专门操作文件的java类--java.io.File类

一、File类的对象创建和常用方法?

File类的定义  public class File

1.File类的静态成员变量

static String

pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。

static char

pathSeparatorChar 与系统相关的路径分隔符。

扫描二维码关注公众号,回复: 12882409 查看本文章

static String

separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。

static char

separatorChar 与系统相关的默认名称分隔符。

package com.wangxing.filedemo;

import java.io.File;

public class FileDemo1 {
	public static void main(String[] args) {
		//File类的静态成员变量
		//static String    pathSeparator与系统相关的路径分隔符字符,为了方便起见表示为字符串【不常用】
		//static char      pathSeparatorChar与系统相关的路径分隔符  【不常用】
		
		//static String    separator与系统相关的默认名称-分割字符,可以方便的方式表示为字符串【常用】
		//static char      separatoryu系统相关的默认名称分隔符【不常用】
		System.out.println("static String pathSeparator=="+File.pathSeparator); //  ;
		System.out.println("static char pathSeparatorChar=="+File.pathSeparatorChar);// ;
		System.out.println("static String separator=="+File.separator);// \
		System.out.println("static char separator=="+File.separatorChar);// \
		// 路径分隔符  ;   分隔字符 \ 
		//常用的是分隔字符  \ 【static String  separator[常用]/static char separatorChar】
		//分割符字符  、可以用来充当文件路径的跟个还
		//例如:F:\20201201\java基础\20201230java(22)\java中的输入输出流1.docx
		//System.out.println("javaz中的输入输出流1.docx的路径==F:\20201201\java基础\20201230java(22)\java中的输入输出流1.docx");
		//默认的\所代表的路径分隔符号在使用的时候会被当成是转义字符
		System.out.println("java中的输入输出流1.docx的路径==F:\\20201201\\java基础\\20201230java(22)\\java中的输入输出流1.docx");
		//不同的操作系统使用的代表文件路径的分隔号是不同的
		//例如: widows--\  liunx---/
		//为了保证我们所编写的java程序能够正常的运行在不同的平台上,所以java将代表文件路径的分隔号,封装成了一个静态变量
		//在不同的平台上,这个静态变量就代表当前系统的文件路径的分隔号
		//所以我们以后在编写文件路径的时候,要尽量使用File类提供的表示分隔符
		System.out.println("java中的输入输出流1.docx==F:"+File.separator+
													"20201230"+File.separator+"java基础"+File.separator+"20201230java(22)"+File.separator+"java中的输入输出流1.docx");
	}
	}

//不同的操作系统使用的代表文件路径的分隔号是不同的
        //例如: widows--\  liunx---/
        //为了保证我们所编写的java程序能够正常的运行在不同的平台上,所以java将代表文件路径的分隔号,封装成了一个静态变量
        //在不同的平台上,这个静态变量就代表当前系统的文件路径的分隔号
        //所以我们以后在编写文件路径的时候,要尽量使用File类提供的表示分隔符

2.File类的构造方法

File(String pathname) 通过给定的文件路径字符串创建新的 File实例。

File(String parent, String child) 通过给定的文件位置字符串和给定的文件名称字符串创建新的 File实例。

File(File parent, String child) 通过给定的文件位置File对象和给定的文件名称字符串创建新的 File实例。  

package com.wangxing.filedemo;

import java.io.File;

public class FileDemo2 {
		public static void main(String[] args) {
			//File类的构造方法
			//File(String pathname)通过给定文件路径字符串创建新的File实例
			//String pathname ---文件/文件夹路径字符串
			//利用eclipse文件夹路径创建eclipse文件夹的File对象
			String eclipsepath="F:"+File.separator+"20201201"+File.separator+"test";
			File eclipseFile=new File(eclipsepath);
			//利用eclipse-jee.zpi文件路径创建表示eclipse-jee.zpi文件的File对象
			String eclipsejeezip="F:"+File.separator+"20201201"+File.separator+"mytest.txt";
			File eclipsejeezipFile1=new File(eclipsejeezip);
			
			//File(String parent ,String child)通过给指定的文件位置字符串和给定的文件名称字符串创建新的File实例
			//String parent--保存文件所在文件夹的路径
			//String child--文件mingcehng
			//创建eclipse-jee.zip文件的File对象
			String parent="F:"+File.separator+"20201201";
			String child="student.txt";
			File eclipsejeezipFile2=new File(parent,child);
			
			//File(File parent,String child)通过给定的文件位置File对象和给定的文件名称字符串创建新的File实例
			//File parent--保存文件所在文件夹的路径【利用第一个File构造方法】
			//String child--文件名称
			//创建eclipse-jee.zip文件的File对象
			File parentfile=new File("F:"+File.separator+"20201201");
			String childString="user.doc";
			File eclipsejeezipFile3=new File(parentfile,childString);
			//利用File类的构造方法创建出File对象,并不会在磁盘中创建实际的文件/文件夹
			//它只是表示你创建出了表示这个文件/文件夹的对象
			//实际的文件。文件夹的创建需要使用File对象调用对应的方法来创建
			
			
		}

}

注意:文件File类的对象创建以后,不会生成实际的文件。

3.File类实例方法

boolean

exists() 判断路径名表示的文件或目录是否存在。

boolean

createNewFile() 创建新文件

boolean

mkdirs()  创建新的文件夹

boolean

delete()  删除文件/文件夹

删除文件夹的时候要将该文件夹下的文件和子文件夹全部删除

boolean

canRead() 判断文件是否可读

boolean

canWrite() 判断文件是否可写 

boolean

isHidden() 判断文件是否为隐藏文件。

boolean

isFile() 判断文件对象是否为普通文件。

boolean

isDirectory() 判断文件对象是否为目录。

String

getPath() 得到文件对象的路径名字符串。

String

getName() 得到文件对象所表示的文件或目录的名称。

String

getParent() 得到文件对象所表示的路径的父目录路径 

long

length() 得到文件对象所表示的文件的长度。

long

lastModified() 得到文件对象所表示的文件上次修改的时间。

String[]

list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组

File[]

listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组

package com.wangxing.filedemo;

import java.io.File;
import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;

public class FileDemo3 {
		public static void main(String[] args) throws IOException {
			//File类的实例方法
			
			//boolean exists()判断路径名表示的文件或者目录是否存在
			String testpath="F:"+File.separator+"20201201"+File.separator+"test";
			File testFile=new File(testpath);
			System.out.println("testFile--exists=="+testFile.exists());
			String mytestpath="D:"+File.separator+"20201201"+File.separator+"mytest.txt";
			File mytestFile=new File(mytestpath);
			System.out.println("mytestFile--exists=="+mytestFile.exists());
			
			//boolean  createNewFile()创建新文件
			System.out.println("mytestFile--createNewFile=="+mytestFile.createNewFile());
			
			//boolean  mkdirs() 创建新的文件夹
			System.out.println("testFile--mkdirs=="+testFile.mkdirs());
			
			//boolean delete()删除文件/空文件夹
			//1.删除文件
			System.out.println("删除文件mytestFile--delete=="+mytestFile.delete());
			//2.删除文件夹【没有子文件/子文件夹】
			System.out.println("删除文件夹testFile--delete=="+testFile.delete());
			//3.删除文件夹【有子文件/子文件夹】[删除文件夹时要将该文件夹下面的文件和子文件夹全部删掉]
			System.out.println("删除文件夹testFile--delete=="+testFile.delete());
			
			//boolean canRead()判断文件是否可读
			System.out.println("判断文件是否可读mytestFile--canRean=="+mytestFile.canRead());
			
			//boolean canWrite()判断文件是否可写
			System.out.println("判断文件是否可写mytestFile--canWrite=="+mytestFile.canWrite());
		
			//boolean isHidden()判断文件是否为隐藏文件
			System.out.println("判断文件是否为隐藏文件mytestFile--isHidden=="+mytestFile.isHidden());
			
			//boolean isFile()判断文件对象是否为普通文件
			System.out.println("判断文件对象是否为普通文件mytestFile--isFile=="+mytestFile.isFile());
			
			//boolean isDirectory()判断文件对象是否为目录
			System.out.println("判断文件对象是否为目录mytestFile--isDirectory=="+mytestFile.isDirectory());
			
			//String getPath()得到文件对象的路径名字符串
			System.out.println("得到文件对象的路径名字符串mytestFile--getPath=="+mytestFile.getPath());
			System.out.println("得到文件对象的路径名字符串testFile--getPath=="+testFile.getPath());
			
			//String getName()得到文件对象所表示的文件或目录的名称
			System.out.println("得到文件对象所表示的文件或目录的名称mytestFile--getName=="+mytestFile.getName());
			System.out.println("得到文件对象所表示的文件或目录的名称testFile--getName=="+testFile.getName());
			
			//String getParent()得到文件对象所表示的路径的父目录路径
			System.out.println("得到文件对象所表示的路径的父目录路径 mytestFile--getParent=="+mytestFile.getParent());
			System.out.println("得到文件对象所表示的路径的父目录路径testfile--getParent=="+testFile.getParent());
			
			//long length()得到文件对象所表示的文件长度。【单位字节】
			System.out.println("得到文件对象所表示的文件长度 mytestFile--length=="+mytestFile.length());
			System.out.println("得到文件对象所表示的文件长度testFile--length=="+testFile.length());
			
			//long lastModified()得到文件对象所表示的文件上次修改的时间【单位毫秒数】
			System.out.println("得到文件对象所表示的文件上次修改的时间 mytestFile--lastModified=="+mytestFile.lastModified());
			Date date=new Date(mytestFile.lastModified());
			SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd E HH:mm");
			String newtime=dateFormat.format(date);
			System.out.println(newtime);
			
		}

}

在写的时候注意路径的配置。

String[]

list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组

File[]

listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组

package com.wangxing.filedemo;

import java.io.File;
import java.sql.Date;
import java.text.SimpleDateFormat;

public class FileDemo4 {
	public static void main(String[] args) {
		//File类的实例方法
		/*
		//String [] list() 得到文件对象代表的文件夹中所有文件的文件夹名称返回一个字符串数组
		String testpath="F:"+File.separator+"20201201";
		File dirFile=new File(testpath);
		String names[]=dirFile.list();
		for (String string : names) {
			System.out.println(string);
		}
		*/
		
		//File[] listFiles()得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
		String testpath="F:"+File.separator+"20201201";
		File dirFile=new File(testpath);
		File files[]=dirFile.listFiles();
		SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd E HH:mm");
		for (File file : files) {
			//得到子文件/子文件夹的名称
			String name=file.getName();
			//得到子文件/子文件夹最后的修改时间
			Date date=new Date(file.lastModified());
			String time=sdf.format(date);
			String type="";
			long size=0;
			if (file.isDirectory()) {
				type="文件夹";
			}else {
				//得到文件的后缀名
				String huozuiming=name.substring(name.lastIndexOf("."));
				//判定文件类型
				if (huozuiming.equals(".txt")) {
					type="文本文档";
				}
				if (huozuiming.equals(".zip")) {
					type="压缩文件";
				}
				if (huozuiming.equals(".exe")) {
					type="应用程序";
				}
				//得到文件大小
				size=file.length();
			}
			System.out.println(name+"\t\t"+time+"\t\t"+type+"\t\t"+size+"字节");
		}

	}
}

猜你喜欢

转载自blog.csdn.net/weixin_52192654/article/details/111996950
今日推荐