异常处理及File类

一.HashMap
字符串aaaaabbbbcccdddee
 要求在控制台输出a(5)b(4)c(3)d(3)e(2)
public class test1 {

	public static void main(String[]args) {

		//键盘录入字符串
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个字符串");
		String s=sc.nextLine();
		
		//将字符串转化为字符数组
		char[]chs=s.toCharArray();
		//创建一个HashMap集合
		HashMap<Character,Integer>map=new HashMap<Character,Integer>();
		
		//遍历数组,判断字符是否是第一次添加到集合,分情况
		//put方法的返回值是个特点,以前与key关联的值,如果没有针对key的映射关系,即
				//当前键值映射关系是第一次出现的,会返回null
		for(Character ch:chs) {
			//获取map集合每个值
			Integer value=map.get(ch);
			if(value==null) {
				map.put(ch, 1);
			}else {
				value++;
				map.put(ch, value);
			}
		}
				
			//创建字符串缓冲区
				StringBuffer sb=new StringBuffer();
				
			//遍历HashMap集合
			Set<Character>set=map.keySet();
			for(Character key:set) {
				Integer value=map.get(key);
				sb.append(key).append("(").append(value).append(")");
			}
			
			String s2=sb.toString();
			System.out.println(s2);
	}
}

二.Collections
Collection和Collections的区别:
  Collection:顶层次单列集合的根接口,它是一个集合,是一个接口
  Collections:是针对集合操作的工具类,有一些功能:随机置换,集合里面的二分查找,将集合的元素进行反转
 
 集合的二分查找
 public static <T> int binarySearch(List<T> list, T key)
  static  T max(Collection coll):获取集合中的最大值
  public static void reverse(List<?> list):将集合中的元素顺序反转
  public static void shuffle(List<?> list):将集合中的元素打乱
  public static void sort(List<T> list)
public class test1 {

	
	public static void main(String[]args) {
		//创建一个集合
		ArrayList<student>set=new ArrayList<student>();
		student s1=new student("gaoyuanyuan",23);
		student s2=new student("gaoyuanyuan",23);
		student s3=new student("zhaoyouting",32);
		student s4=new student("liushishi",25);
		
		set.add(s1);
		set.add(s2);
		set.add(s3);
		set.add(s4);
		
		//比较器排序
		Collections.sort(set,new Comparator<student>() {

			@Override
			public int compare(student s1, student s2) {
				int num=s1.getAge()-s2.getAge();
				int num2=num==0?s1.getName().compareTo(s2.getName()):num;
				return num2;
			}

		});
		
		//遍历集合并输出
		for(student s:set) {
			System.out.println(s.getName()+" "+s.getAge());
			
		}
	}
}

三.异常处理
异常:
   编译时期异常:只要出现的不是运行时期异常,统称为编译时期  日期的文本格式---解析   java.util.Date类型:ParseException:解析异常
      编译时期异常:开发者必须处理!
   运行时期异常:RuntimeException
      编译通过了,但是开发者代码不严谨

异常的处理分为两种:
 1)try...catch...finally (标准格式) :捕获异常
  2)throws ...  抛出异常
1.try..catch
public  static void main(String[]args) {
		int a=10;
		int b=0;
		try {
			System.out.println(a/b);
		}catch(ArithmeticException e) {
			System.out.println("错误");
		}
	}
多异常捕获
public static void main(String[]args) {
		try {
			int a=10;
			int b=0;
			System.out.println(a/b);
		}catch(IndexOutOfBoundsException|NumberFormatException
				|ArithmeticException e) {
			System.out.println("可能发生这些异常其中之一");
			//e=new ArithmeticException("test");
			//捕获多异常时,异常变量 默认被final修饰,不可更改
			//
		}catch(Exception e){
			e=new RuntimeException("test");
			//捕获一种类型异常时,异常变量没有被final修饰,可以更改
			e=new ArithmeticException("hello");
		}
	}

编译时期异常和运行时期异常的区别?
  编译时期:开发者必须进行显示处理,不处理,编译不能通过,
   运行时期异常:无需进行显示处理,可以像编译时期一样进行处理

public String getMessage() :消息字符串
  public String toString(): 异常的简短描述 ":
 ":由冒号和空格组成
  public void printStackTrace():返回值void 直接调用, 包含了消息字符串,还有": "
  信息描述,具体出现异常的代码定位以及定位的源码上

四.File类
File类:表示文件或者目录的路径的抽象表现形式.  IO流就是对文件进行操作的
    不管是文件还是目录都是通过File进行操作的,File能新建,删除,重命名文件名和目录
    File不能访问文件内容本身,如果需要访问文件本身内容,需要用IO流
  
 public File(String pathname)
    表示pathname的抽象路径表现的形式 (开发中使用这种方式)
 public File(String parent,String child)
    根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
 public File(File parent, String child)
    根据一个file对象和一个文件路径来构造File实例
 
public static void main(String[]args) {
		
		//public File(String pathname):表示pathname的抽象路径表现的形式
		File file=new File("e:\\demo\\a.txt");
		System.out.println(file);
		
		File file2=new File("e:\\demo","a.txt");
		System.out.println(file2);
		
		File file3=new File("e:\\demo");
		File file4=new File(file3,"a.txt");
		System.out.println(file4);
	}
跟创建相关的功能:
 public boolean createNewFile():
     创建文件,当文件不存在的时候,创建此抽象路径下的文件
    本身方法异常:IOException
    创建文件的前提:文件夹一定要存在,如果不存在,IOException
    
  public boolean mkdir():创建一个文件夹,如果文件夹存在,不创建
  public boolean mkdirs():创建文件夹,如果父目录不存在,会创建此目录
 
public static void main(String[]args) throws IOException {
		File file=new File("d:\\demo");
		System.out.println(file.mkdir());
		
		File file2=new File("d:\\demo\\a.txt");
		System.out.println(file2.createNewFile());
		
		
		File file3=new File("d:\\aaa\\bbb\\ccc");
		System.out.println(file3.mkdirs());
		
	}

扫描二维码关注公众号,回复: 963793 查看本文章
删除功能 public boolean delete() :删除文件或者文件夹(目录不能是空的)  
          逐一删除文件或者目录

public static void main(String[]args) {
		//删除文件
		File file=new File("d:\\demo\\a.txt");
		System.out.println(file.delete());
		
		//删除文件夹
		File file2=new File("d:\\demo");
		System.out.println(file2.delete());
		
		//删除aaa\\bbb\\ccc
		File file3=new File("d:\\aaa\\bbb\\ccc");
		System.out.println(file3.delete());
		File file4=new File("d:\\aaa\\bbb");
		System.out.println(file4.delete());
		File file5=new File("d:\\aaa");
		System.out.println(file5.delete());
	}

绝对路径:c:\\xxx\\xxx.txt 
       相对路径:a.txt
     File 的重命名功能:
  public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
   如果路径名一致的情况,那么只是重命名
   如果两次路径名称不一致,那么不只是重命名,并且剪切

public static void main(String[]args) {
		//路径一样,重命名
		File file = new File("d:\\图片.jpg") ;
		File newFile =new File("d:\\图片图片.jpg") ;
		System.out.println("renameTo():"+file.renameTo(newFile));
		System.out.println("-------------------------");
		//路径不一样,重命名并剪切	
		File file2 = new File("d:\\图片图片.jpg") ;
		File file3 = new File("e:\\图片.jpg") ;
		System.out.println("renameTo():"+file2.renameTo(file3));
		
	}

File类的获取功能:
   public String getAbsolutePath():获取抽象文件的绝对路径
 public String getPath():获取相对路径的字符串
   public String getName()返回由此抽象路径名表示的文件或目录的名称
   public long length()返回由此抽象路径名表示的文件的长度。
   public long lastModified():文件最后一次被修改的时间(时间毫秒值)

public static void main(String[]args) throws IOException {
		
		File file1=new File("d:\\demo");
		file1.mkdir();
		File file=new File("d:\\demo\\a.txt");
		file.createNewFile();
		
		System.out.println(file.getAbsolutePath());
		System.out.println(file.getPath());
		System.out.println(file.getName());
		System.out.println(file.length());
		System.out.println(file.lastModified());
	}

File的高级功能
   public String[] list() :获取当前某个路径下的所有的文件夹以及文件名称的字符串数组
   public File[] listFiles() :获取当前某个路径下所有的文件夹以及文件的File数组

public static void main(String[]args) {
		//表示e盘
		File file=new File("e:\\");
		String[]str=file.list();
		for(String s:str) {
			System.out.println(s);
		}
		
		File[] files=file.listFiles();
		for(File f:files) {
			System.out.println(f);
		}
	}

猜你喜欢

转载自blog.csdn.net/fnwibwj/article/details/80356026