您的位置 首页 java

java初识IO流及File类详解

/**

* 初识 IO流

* 输入流input/reader,数据从数据源到程序。输出流output/writer,数据从程序到目的地。输入输出是相对程序而言

* 字节流stream结尾,以字节为单位获取数据。字符流reader/writer结尾,以字符为单位获取数据,字符char为2字节unicode

* 节点流,直接从数据源或目的地读写数据的流。处理流/包装流,不直接连接数据源/目的地,对流进行处理/包装的流

*/

public class firstIO {

//使用 file InputStream和 FileOutputStream 进行文件读写操作

//类结尾Stream代表字节流,input代表输入流,output代表输出流,file代表操作对象为文件,即以字节为单位对文件进行访问的流,直接连接文件/数据源所以是节点流

public static void main(String[] args) {

String path = firstIO.class.getClassLoader().getResource(“”).getPath()+”testIO.txt”;

System.out.println(path);

//路径为”/C:/Users/86158/IdeaProjects/projectDIVA/out/production/iostream/testIO.txt”

//.getResource()得到的是编译后的 class文件 所在位置的路径,在out目录下而非当前正在编写的 java 文件所在路径

try (FileOutput Stream fos = new FileOutputStream(path)){

//try-with-resource包裹io操作

fos.write(97);

//传入int类型,转化为字节存储,当通过文本的方式读取时才会转换显示为字符

fos.write(100);

fos.write(103);

//Stream字节流是以字节为单位,存取的字符只能为0-255即对应ASCII码

fos.write(355);

//当超过 byte 范围会溢出,355-256=99对应字符c

//作为文本文件打开时内容为“adgc”

}catch ( Exception e){

//catch处理异常

e.printStackTrace();

}

try(FileInputStream fis = new FileInputStream(path)){

for (int i = fis.read();i!=-1;i = fis.read()){

// File InputStream类的.read()为向后读取一个字节/8位 二进制 数,读到字节时会返回十 进制 数值,返回值类型为int,作为文本读取需要(char)手动转换为字符,当文件读完、向后读不到字节时返回-1

System.out.print((char) i);

//文件中的换行符也会被读取到,所以不需要println换行

//结果为adgc

}

}catch (Exception e){

e.printStackTrace();

}

File f = new File(“iostream/testFile.txt”);

//File文件类 将文件/目录转换为对象的包装类,对文件/目录包装之后可以调用File类内的方法

//创建File对象需要指定绝对路径或 相对路径 new File(“”)默认生成当前项目目录下的路径

System.out.println(f.getName());

//.getName()只返回文件名,不包含路径 结果为 test File.txt

System.out.println(f.getPath());

//.getPath()返回创建File对象时传入的路径,如果创建时传入的是绝对路径则返回绝对路径,如果传入的是相对路径则返回相对路径 结果为iostream\testFile.txt

System.out.println(f.getAbsolutePath());

//.getAbsolutePath()返回绝对路径 结果为C:\Users\86158\IdeaProjects\projectDIVA\iostream\testFile.txt

System.out.println(f. exists ());

//查询文件/目录f是否存在,结果为false

try {

System.out.println(f.createNewFile());

//.createNewFile()创建新文件(非目录),如果路径中某级不存在或者已存在同名文件或目录(含后缀的目录)则创建失败返回false,创建成功返回true

} catch (IOException e) {

throw new RuntimeException(e);

}

System.out.println(f.delete());

//删除文件f,如果不存在则返回false,这里删除只会删除testFile.txt文件,目录树C:\Users\86158\IdeaProjects\projectDIVA\iostream不会删除,因为目录 iostream 是File(“C:\Users\86158\IdeaProjects\projectDIVA\iostream”)而不是C:\Users\86158\IdeaProjects\projectDIVA\iostream\testFile.txt

System.out.println(f.isFile());

//查询f是否为文件,当没有同名文件或者f为目录时返回false

System.out.println(f.length());

//返回文件的字节数,即文件大小,结果为0,f为空文件

System.out.println(f.isHidden());

//判断文件f是否为 隐藏文件 ,hidden隐藏的,结果为false

System.out.println(f.isDirectory());

//查询f是否为目录,不存在或f为文件时返回false,结果为false

System.out.println(f.mkdir());

//创建目录f,当路径中某级不存在或者f为文件或者目录f已存在时返回false,结果为false

System.out.println(f.mkdirs());

//创建目录树f,当路径中某级不存在时创建这些中间路径,f为文件或者已存在目录f时返回false,结果为false

File f2 = f.getParentFile();

//.getParentFile()返回上一级目录的File对象

System.out.println(f2.getPath());

//结果为iostream,因为f使用相对路径创建,所以f2也为相对路径创建

System.out.println(f.getParent());

//.getParent()返回上一级的路径字符串,结果为iostream和f2.getPath()相同

String[] fileList = f2.list();

//.list()返回目录f2下的所有文件名

System.out.println(Arrays.toString(fileList));

//结果为[iostream.iml, src, testFile.txt],返回文件名不包含路径

File[] files = f2.listFiles();

//.listFiles()返回目录f2下的所有文件的File对象

System.out.println(Arrays.toString(files));

//结果为[iostream\iostream.iml, iostream\src, iostream\testFile.txt],直接打印File对象时.toString返回.getPath()

}

}

文章来源:智云一二三科技

文章标题:java初识IO流及File类详解

文章地址:https://www.zhihuclub.com/181812.shtml

关于作者: 智云科技

热门文章

网站地图