该篇博客目录
1、Map接口及其常用实现类(HashMap、Hashtable)
2、File类(概述、创建、删除、重命名、文件属性读取/设置、遍历文件夹)
一、Map接口及其常用实现类(HashMap、Hashtable)
1、Map接口保存形式(键值对)
key—>value的方式保存,所以既需要保存key也需要保存value
2、Map常用实现类
- HashMap:无序存放,key不允许重复(key唯一)
- Hashtable:无序存放,key不允许重复(key唯一)
3、常用方法,参考api即可,这里我举一个常用的Demo
package hhh;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class my_hello_world {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String,String> m=new HashMap();
//添加键值对
m.put("key1", "value1");
m.put("key2", "value2");
m.put("key3", "value3");
m.put("key4", "value4");
//获得key1的内容
String str=m.get("key1");
System.out.println(str);
//判断键或值是否存在
if(m.containsKey("key1"))
{
System.out.println("key1存在");
}else {
System.out.println("key1不存在");
}
if(m.containsValue("value1"))
{
System.out.println("value1存在");
}else {
System.out.println("value1不存在");
}
//得到全部的键或值keySet方法(获得键返回类型是Set,获得值返回类型是Collection)
//获得键
Set<String> s=m.keySet();
Iterator<String> i=s.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
//获得值
Collection<String> p=m.values();
Iterator<String> u=p.iterator();
while(u.hasNext())
{
System.out.println(u.next());
}
}
}
二、File类
1、File类概述
文件和目录路径名的抽象表示形式。
2、File类对文件创建、删除、重命名
a、需要用到的方法
创建File类对象方法
exists():判断文件是否存在
- renameTo(File dest);:重命名文件,参数是新文件名创建的对象
- getName();:得到文件名属性
- isFile():是否是标准文件名
- isDirectory():是否是标准目录
- delete();:删除文件
- createNewFile();:创建文件
b、Demo
package HelloFile;
import java.io.File;
import java.io.IOException;
public class testFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("hello.txt");
if(f.exists())
{
File newf=new File("newfile.txt");
//文件夹结构必须处于同一个分区
f.renameTo(newf);
System.out.println(f.getName());
if(f.isFile())
{
System.out.println("是标准文件名");
}
if(f.isDirectory())
{
System.out.println("是目录");
}
f.delete();
System.out.println("文件删除成功");
}
else {
System.out.println("文件不存在");
try {
f.createNewFile();
System.out.println("文件已成功创建");
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("文件无法创建");
}
}
}
}
2、File类文件属性读取
a、需要用到的方法
- exists():文件是否存在
- getName():读取文件名
- getPath():读取文件路径
- getAbsolutePath():读取文件绝对路径
- new File(f.getAbsoluteFile().getParent()):获取文件父级路径
- length():读取文件大小,按字节计算
- isHidden():判断文件是否被隐藏
- canRead():判断文件是否可读
- canWrite():判断文件是否可写
- isDirectory():判断是否为文件夹
b、Demo
package HelloFile;
import java.io.File;
public class HelloFile2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("fi.txt");
// 判断文件是否存在
System.out.println("判断文件是否存在:"+f.exists());
// 读取文件名称
System.out.println("读取文件名称:"+f.getName());
// 读取文件路径
System.out.println("读取文件路径:"+f.getPath());
// 读取文件绝对路径
System.out.println("读取文件绝对路径:"+f.getAbsolutePath());
// 获取文件父级路径
System.out.println("获取文件父级路径"+new File(f.getAbsoluteFile().getParent()));
// 读取文件大小
System.out.println("读取文件大小:"+f.length()+"byte");//按字节计算,长整型
// 判断文件是否被隐藏
System.out.println("判断文件是否被隐藏:"+f.isHidden());
// 判断文件是否可读
System.out.println("判断文件是否可读:"+f.canRead());
// 判断文件是否可写
System.out.println("判断文件是否可写:"+f.canWrite());
// 判断文件是否为文件夹
System.out.println("判断文件是否为文件夹:"+f.isDirectory());
}
}
3、File类文件属性设置
a、需要用到的方法
- setWritable(boolean);将文件设为可写//true为可写,false为不可写
- setReadable(boolean);将文件设为可读//true为可读,false为不可读
- setReadOnly();将文件设为只读
b、Demo
package HelloFile;
import java.io.File;
public class helloFile3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("test.file");
if(f.exists())
{
// 将文件设为可写//true为可写,false为不可写
f.setWritable(true);
// 将文件设为可读//true为可读,false为不可读
f.setReadable(true);
// 将文件设为只读
f.setReadOnly();
}
}
}
4、File类实现遍历文件夹
a、需要用到的方法
- isDirectory():是否是文件夹
- listFiles():包含了当前目录下的子文件和子文件夹,返回的是File对象的数组
b、Demo
package HelloFile;
import java.io.File;
public class hf4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
PrintFile(new File("F:\\java\\hello_JAVA"),1);
}
public static void PrintFile(File dir,int tab)
{
//判断是否是一个文件夹
if(dir.isDirectory())
{
File obj[]=dir.listFiles();//包含了当前目录下的子文件和子文件夹,返回的是File对象的数组
for(int i=0;i<obj.length;i++)
{
for(int j=0;j<tab;j++)
{
System.out.print("|--");
}
System.out.println(obj[i].getName());
//如果是文件夹,则进入该文件夹继续输出
if(obj[i].isDirectory())
{
PrintFile(obj[i],tab+1);//打印obj[i]自己内部的元素
}
}
}
}
}
5、File类实现文件的读写
a、需要用到的方法
文件读取(File f=new File(“fi.txt”);)
- FileInputStream fis=new FileInputStream(f);创建文件输入流
- InputStreamReader isr=new InputStreamReader(fis);获取文件输入流后,将输入流包装成InputStreamRead,是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。有些时候还有一个参数是”UTF-8”,根据实际而定
- BufferedReader br=new BufferedReader(isr);使用BufferedRead,从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
- readLine():读取内容
- close();:关闭文件,关闭文件顺序:先打开的后关闭,后打开的先关闭
文件写入(File f2=new File(“newfi.txt”);)
- FileOutputStream fos=new FileOutputStream(f2);文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。如果文件不存在,FileOutputStream会创建出来
- OutputStreamWriter osw=new OutputStreamWriter(fos);OutputStreamWriter 是字符流通向字节流的桥梁
- BufferedWriter bw=new BufferedWriter(osw);将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
b、文件读写Demo
package HelloFile;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class hf5 {
public static void main(String[] args) {
/*
*
* 文件的读取
*
* */
File f=new File("fi.txt");
if(f.exists())
{
System.out.println("fi.txt文件存在");
try {
//创建文件输入流
FileInputStream fis=new FileInputStream(f);
//获取文件输入流后,将输入流包装成InputStreamRead,是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符
InputStreamReader isr=new InputStreamReader(fis);//字节向字符转换的时候需要编码utf-8
//使用BufferedRead,从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
BufferedReader br=new BufferedReader(isr);
String line;
while((line=br.readLine())!=null)
{
System.out.println(line);
}
//当读取内容为空之后需要关闭当前的输入流(先打开的后关闭,后打开的先关闭)
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
*
* 文件的写入
*
* */
try {
File f2=new File("newfi.txt");
//文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。如果文件不存在,FileOutputStream会创建出来
FileOutputStream fos=new FileOutputStream(f2);
//OutputStreamWriter 是字符流通向字节流的桥梁
OutputStreamWriter osw=new OutputStreamWriter(fos);
//将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
BufferedWriter bw=new BufferedWriter(osw);
bw.write("hello");
bw.close();
osw.close();
fos.close();
System.out.println("写入完成");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
本文主要介绍了Java中Map接口及其两种实现类HashMap和Hashtable的使用方法,并详细阐述了File类的操作,包括文件和目录的创建、删除、重命名等,以及文件属性的读取与设置。
771

被折叠的 条评论
为什么被折叠?



