javaSE----java中的输入输出流__1

30 篇文章 0 订阅
4 篇文章 0 订阅

java中的输入输出流1

输入输出流—对文件进行读【打开】写【修改】操作的java类库。
文件—把数据持久化到磁盘的载体
       —文件的组成

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

我们要想通过java提供的输入输出流读写文件中的内容就得先学会操作文件。
Java中为我们提供了一个专门操作文件的java类–java.io.File类

1.File类的对象创建和常用方法?
File类的定义 public class File
File类的静态成员变量:

静态成员变量修饰符及类型静态成员变量名说明
static StringpathSeparator与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static charpathSeparatorChar与系统相关的路径分隔符。
static Stringseparator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static charseparatorChar与系统相关的默认名称分隔符。

例如:

package com.wangxing.test1;

import java.io.File;

public class TestFile1 {

	public static void main(String[] args) {
		/*
		File类的静态成员变量
		static String   pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。 
		static char	    pathSeparatorChar 与系统相关的路径分隔符。 

		static String   separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 
		static char	    separatorChar 与系统相关的默认名称分隔符。 
		*/
		System.out.println("File.pathSeparator=="+File.pathSeparator);
		System.out.println("File.pathSeparatorChar=="+File.pathSeparatorChar);
		System.out.println("-------------------------");
		System.out.println("File.separator=="+File.separator);
		System.out.println("File.separatorChar=="+File.separatorChar);
		
	}

}

在这里插入图片描述
注意:
假设我输出一个文件的路径【F:\test\name.text】
System.out.println(“F:\test\name.text”);
此时我们输出的文件路径不正确,因为java程序将字串中的“\t”解释成制表符
将“\n”解释成了回车输出,此时我们就无法正确的输出/描述一个文件路径。
我们要怎么办,可以通过“\”将文件的路径分割符转义。
既然我们可以通过“\”转义路径分隔符,那么为什么还需要File类提供静态成员变量来表示路径分割符???

  • 原因1:在=使用的时候并不全知道""与哪一个字母组合就会是一个特殊字符。
  • 原因2:不同的计算机操作系统的路径分割符是不一样 例如""windows操作

如:系统分隔符 "/"Linux分隔符.
为了不配特殊字符和可以在任何操作系统上完整的表示一个路径分割符号,
所以java就将路径分割符号做成了静态成员变量,以适应不同的操作系统和排除特殊字符。

构造方法:

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

例如:

package com.wangxing.test1;

import java.io.File;

public class TestFile2 {

	public static void main(String[] args) {
		/*
		构造方法
		File(String pathname) 通过给定的文件路径字符串创建新的 File实例。 
		File(String parent, String child) 通过给定的文件位置字符串和给定的文件名称字符串创建新的 File实例。 
		File(File parent, String child) 通过给定的文件位置File对象和给定的文件名称字符串创建新的 File实例。  
		*/
		//第一种:
		String stu="F:"+File.separator+"test"+File.separator+"names.text";
		File file = new File(stu);
		//第二种:
		System.out.println();
		String stu1="F:"+File.separator+"test";
		String stu2="names.text";
		File file2=new File(stu1,stu2);
		//第三种:
		String stu4="F:"+File.separator+"test";
		File file3=new File(stu4);
		String stu5="names.text";
		File file5=new File(file3,stu5);
	}

}

注意:文件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.test1;

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

public class TestFile3 {

	public static void main(String[] args) throws IOException {
		//实例方法:
		/*
		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() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
		*/
		//创建对象
		String stu1="D:"+File.separator+"Develop";
		String stu2="D:"+File.separator+"Develop"+File.separator+"name.txt";
		File file1=new File(stu1);
		File file2=new File(stu2);
		
		//1.boolean	exists() 判断路径名表示的文件或目录是否存在。
		//判断目录
		System.out.println("目录是否存在?"+file1.exists());
		//判断文件
		System.out.println("文件是否存在"+file2.exists());
		
		if(!file1.exists()){
          //boolean	mkdirs()  创建新的文件夹
			file1.mkdir();
		}
		
		if(!file2.exists()){
			//boolean	createNewFile() 创建新文件
				file2.createNewFile();//抛异常
		}else{
		//boolean	delete()  删除文件/文件夹
			file2.delete();	
		}
		
//		boolean	    canRead() 判断文件是否可读
		System.out.println("文件是否可读?"+file2.canRead());
//		boolean	    canWrite() 判断文件是否可写 
		System.out.println("文件是否可写?"+file2.canWrite());
//		boolean	    isHidden() 判断文件是否为隐藏文件。
		System.out.println("文件是否是否为隐藏文件?"+file2.isHidden());
//		boolean 	isFile() 判断文件对象是否为普通文件。 
		System.out.println("文件对象是否为普通文件?"+file2.isFile());
//		boolean 	isDirectory() 判断文件对象是否为目录。
		System.out.println("文件对象是否为目录?"+file2.isDirectory());
	
		
//		String   	getPath() 得到文件对象的路径名字符串。
		System.out.println("文件路径:"+file2.getPath());
//		String      getName() 得到文件对象所表示的文件或目录的名称。
		System.out.println("文件/目录名称:"+file2.getName());
//		String      getParent() 得到文件对象所表示的路径的父目录路径 
		System.out.println("路径的父目录路径:"+file2.getParent());
		
//		long	    length() 得到文件对象所表示的文件的长度。 
		System.out.println("文件对象所表示的文件的长度:"+file2.length());
//		long	    lastModified() 得到文件对象所表示的文件上次修改的时间。 
		//保存得到的时间
		Date date=new Date(file2.lastModified());
		//初始化
		SimpleDateFormat shijian=new SimpleDateFormat("yyyy-MM-dd E HH:mm");
		String newtime=shijian.format(date);
		System.out.println("文件上次修改的时间:"+newtime);

	}

}

在这里插入图片描述
注意:
实力方法中:
String[] list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
File[] listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
有些不同,类型是数组

使用如下:

package com.wangxing.test1;

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

import org.omg.CORBA.PUBLIC_MEMBER;

public class TestFile4 {
	public static void main(String[] args) {
		//String[]	list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
		//File[]      listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
		//创建对象
				String stu1="D:"+File.separator+"Develop";
				String stu2="D:"+File.separator+"Develop"+File.separator+"name.txt";
				File file1=new File(stu1);
				File file2=new File(stu2);
				//String[]	list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
				String[] stu=file1.list();
				for(String name:stu){
					System.out.println("文件夹中的所有文件和文件夹名称:"+name);
				}
				System.out.println("---------------------------------");
				//File[]      listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
				File file[]=file1.listFiles();
				
				for(File f:file){
					//得到子文件/子文件夹的名称
					String name=f.getName();
					//得到修改时间
					String time=new SimpleDateFormat("yyyy-MM-dd E HH:mm").format(f.lastModified());
					//得到类型和大小
					String leixing="";
					String stu3="";
					if(f.isFile()){
					leixing=getType(f.getName());
					stu3=f.length()+"字节";
					}
					StringBuilder stringBuilder=new StringBuilder();
					stringBuilder.append(name+"\t\t");
					stringBuilder.append(time+"\t\t");
					stringBuilder.append(leixing+"\t\t");
					stringBuilder.append(stu3);
					System.out.println(stringBuilder.toString());

				}
				
	}
	/**
	 * 得到文件类型
	 * @param name
	 * @return
	 */
	public static String getType(String name){
		String type="";
		String houzhui=name.substring(name.lastIndexOf("."));
		if(houzhui.equalsIgnoreCase(".mp4")){
			type="音乐文件";
		}
		if(houzhui.equalsIgnoreCase(".html")){
			type="网页文件";
		}
		if(houzhui.equalsIgnoreCase(".txt")){
			type="文本文档";
		}
		if(houzhui.equalsIgnoreCase(".java")){
			type="源文件";
		}
		return type;
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值