您的位置:首页 > 编程语言 > Java开发

JAVA基础初探(十二)Map接口及其常用实现类(HashMap)、File类详解(概述、创建、删除、重命名、文件属性读取/设置、遍历文件夹)

2018-02-02 21:19 1401 查看

该篇博客目录

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.v
4000
alues();
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();
}

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐