第⼗三章IO流(尚硅⾕最新版Java零基础编程_2019版笔记)
第⼗三章 IO流
JUnit单元测试步骤:
1.配置⽅法:或
使⽤@Test可能会报错,解决⽅法:选择Add “JUnit4” to classpath
2.创建Java类,进⾏单元测试
Java类要求:此类是public的;此类提供公共的⽆参构造器
3.此类中声明单元测试⽅法
单元测试⽅法要求:⽅法的权限是public;没有返回值;没有形参
4.此单元测试⽅法上需要声明注解:@Test,并在单元测试类中导⼊:import org.junit.Test;
5.声明好单元测试⽅法后,就可以在⽅法体内测试相关的代码
6.写完代码后,左键选中单元测试⽅法名 -> 右键 -> run ‘⽅法名’
package com.atguigu.java;
import org.junit.Test;
/**
* @author quanquan
* @create 2020-03-29-18:51
*/
public class JUnitTest {
@Test
public void Test1(){
System.out.println("Test");
}
}
File类的使⽤
File类的⼀个对象,代表⼀个⽂件或⼀个⽂件⽬录(俗称:⽂件夹)
File类声明在java.io包下
创建File类的构造器
File(String filePath)
File(String parentPath,String childPath)
File(File parentPath,String childPath)
相对路径:相较于某个路径下,指明的路径
绝对路径:包含盘符在内的⽂件或⽂件⽬录的路径
注意:windows和DOS系统默认使⽤ “\” 来表⽰路径分隔符
UNIX和URL使⽤ “/” 来表⽰
File类中涉及到关于⽂件或⽂件⽬录的创建、删除、重命名、修改时间、⽂件⼤⼩等⽅法,并未涉及到写⼊或读取⽂件内容的操作。如果需要读取或写⼊⽂件内容,必须使⽤IO流来完成。
后续File类的对象常会作为参数传递到流的构造器中,指明读取或写⼊的"终点"。
package com.atguigu.java;
import org.junit.Test;
import java.io.File;
/**
* @author quanquan
* @create 2020-03-29-20:15
*/
public class FileTest {
@Test
public void test1(){
//构造器1
File file1 =new File("");//相对于当前的module
File file2 =new File("D:\\IDEA-workspace\\JavaSenior\\pro13\\he.txt"); System.out.println(file1);
System.out.println(file2);
//构造器2
File file3 =new File("D:\\IDEA-workspace","JavaSenior");
System.out.println(file3);
//构造器3
File file4 =new File(file3,"hi.txt");
System.out.println(file4);
}java零基础该怎么学
}
File类⽅法
public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent():获取上层⽂件⽬录路径。若⽆,返回null
public long length() :获取⽂件长度(即:字节数)。不能获取⽬录的长度。
public long lastModified() :获取最后⼀次的修改时间,毫秒值
如下的两个⽅法适⽤于⽂件⽬录:
public String[] list() :获取指定⽬录下的所有⽂件或者⽂件⽬录的名称数组
public File[] listFiles() :获取指定⽬录下的所有⽂件或者⽂件⽬录的File数组
public boolean renameTo(File dest):把⽂件重命名为指定的⽂件路径
⽐如:ameTo(file2)为例:
要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。(成功后file1不存在⽽file2存在了)
public boolean isDirectory():判断是否是⽂件⽬录
public boolean isFile() :判断是否是⽂件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏
创建硬盘中对应的⽂件或⽂件⽬录
public boolean createNewFile() :创建⽂件。若⽂件存在,则不创建,返回false
public boolean mkdir() :创建⽂件⽬录。如果此⽂件⽬录存在,就不创建了。如果此⽂件⽬录的上层⽬录不存在,也不创建。
public boolean mkdirs() :创建⽂件⽬录。如果此⽂件⽬录存在,就不创建了。如果上层⽂件⽬录不存在,⼀并创建
删除磁盘中的⽂件或⽂件⽬录
public boolean delete():删除⽂件或者⽂件夹(注意:Java中的删除不⾛回收站)
删除⽂件夹要想成功,⽂件⽬录下不能有⼦⽬录
流的分类:字节流和字符流,输⼊流和输出流,节点流和处理流
(抽象基类)字节流字符流输⼊流InputStream Reader
输出流OutputStream Writer
流的体系结构
抽象基类节点流(或⽂件流)缓冲流(处理流的⼀种)
InputStream FileInputStream (read(byte[] buffer))BufferedInputStream (read(byte[] buffer)) OutputStream FileOutputStream (write(byte[] buffer,0,len)BufferedOutputStream (write(byte[] buffer,0,len) / flush() Reader FileReader (read(char[] cbuf))BufferedReader (read(char[] cbuf) / readLine()) Writer FileWriter (write(char[] cbuf,0,len)BufferedWriter (write(char[] cbuf,0,len) / flush()
DAY24
使⽤ FileReader 读取⽂件
read()的理解:返回读⼊的⼀个字符。如果达到⽂件末尾,返回-1
异常的处理:为了保证流资源⼀定可以执⾏关闭操作。需要使⽤try-catch-finally处理读⼊的⽂件⼀定要存在,否则就会报FileNotFoundException。
@Test
public void testFileReader(){
FileReader fr = null;
try{
//1.实例化File类的对象,指明要操作的⽂件
File file =new File("");//相较于当前Module
//main⽅法中的File file = new File(""); 相较于当前⼯程
//2.提供具体的流
fr =new FileReader(file);
// ⽅式⼀
// 3.数据的读⼊
// //read():返回读⼊的⼀个字符。如果达到⽂件末尾,返回-1
/
/ int data = fr.read();
// while(data != -1){
// System.out.print((char) data);
// data = fr.read();
// }
//⽅式⼆:语法上针对⽅式⼀的修改
int data;
while((data = fr.read())!=-1){
System.out.print((char) data);
}
}catch(IOException e){
e.printStackTrace();
}finally{
//4.流的关闭操作
try{if(fr != null){
fr.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
对read()操作升级:使⽤read的重载⽅法
@Test
public void testFileReader1(){
FileReader fr = null;
try{
//1.File类的实例化
File file =new File("");
//2.FileReader流的实例化
fr =new FileReader(file);
//3.读⼊的操作
//read(char[] cbuf):返回每次读⼊cbuf数组中的字符的个数。如果达到⽂件末尾,返回-1
char[] cbuf =new char[5];
int len;
while((len = fr.read(cbuf))!=-1){
//⽅式⼀:
//错误的写法
// for(int i = 0;i < cbuf.length;i++){
// System.out.print(cbuf[i]);
// }
//正确的写法
// for(int i = 0;i < len;i++){
// System.out.print(cbuf[i]);
/
/ }
//⽅式⼆:
//错误的写法,对应着⽅式⼀的错误的写法
// String str = new String(cbuf);
// System.out.print(str);
//正确的写法
String str =new String(cbuf,0,len);
System.out.print(str);
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(fr != null){
//4.资源的关闭
try{
fr.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
从内存中写出数据到硬盘的⽂件⾥
输出操作,对应的File可以不存在的。并不会报异常
File对应的硬盘中的⽂件如果不存在,在输出的过程中,会⾃动创建此⽂件。
File对应的硬盘中的⽂件如果存在:
如果流使⽤的构造器是:FileWriter(file,false) / FileWriter(file):对原有⽂件的覆盖
如果流使⽤的构造器是:FileWriter(file,true):不会对原有⽂件覆盖,⽽是在原有⽂件基础上追加内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论