12.19 file 与io流

12.19 file与io流

File

1. 新建文件或者文件夹

新建文件
File F = new File(pathname:"路径+文件名");
Boolean flag = F.creatNewFile();//如果文件不存在就创建,存在就创建失败。
新建一级文件夹
File F = new File(pathname:"一级路径")//例如D:\\F;
Boolean flag = F.mkdir();
System.out.println(flag?"文件夹创建成功""文件夹创建失败");
新建多级文件夹
File F = new File(pathname:"多级路径")//例如D:\\class\\students\\F;
Boolean flag = F.mkdirs();
System.out.println(flag?"文件夹创建成功""文件夹创建失败");

2. 删除文件

File F = new File("D:\\java\\F");//例如D\\F;
Boolean flag = F.mkdirs();
System.out.println(flag?"文件夹创建成功":"文件夹创建失败");
flag = F.delete();
System.out.println(flag?"delete successfully":"delete unsuccessfully");

运行结果:

 

 

3.查询文件

  • 用 文件名.exists() 方法可以判断某个文件存不存在,返回值为boolean。

 

 

File F = new File("D:\\java\\F");
Boolean flag = F.mkdirs();
flag = F.isDirectory();
if(flag){
   File[] arr = F.listFiles();
   for(File tempfile : arr)
       System.out.println(tempfile);
}
else{  
           System.out.println("普通文件pass:"+F.getPath());
}
}

//如果文件夹里面有文件夹一般用递归找出每个普通文件

io流

1. 输入流

FileInputStream

  • InputStream是输入流的祖宗类,可被继承,例如FileInputStream和BufferedInputStream都是InputStream的子类。

  • 用FileInputStream封装对象,read()方法读取txt文本里的数据。read的返回值为int,文档的最后一个字符返回值为-1.

  • read方法每次只能读取一个字节,即一个英文字符,中文在不同的编码格式中站不同的字节大小(大于等于2),所以用read方法读取回导致乱码。

        FileInputStream F;
try {
F = new FileInputStream("D:\\java\\F\\F.txt");
int ch = 0;
while((ch=F.read())!=-1) {
System.out.println((char)ch);
}
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();

BufferedInputStream

  • BufferedInputStream可以自定义一次读取的字节数,效率高于FileInputStream。

  • 用BufferedInputStream实例化对象时参数必须传入一个InputStream型的形参,可以是FileInputStream实例化的对象。

        try {
InputStream in = new FileInputStream("D:\\java\\F\\F.txt");
BufferedInputStream bis = new BufferedInputStream(in);
byte[] vec = new byte[2];//每次读取的字节数
int ch=0;
while((ch = bis.read(vec))!=-1)
{
System.out.println(ch);
}
in.close();
bis.close();
}catch(IOException e) {
e.printStackTrace();
}

 

2. 输出流

FileOutputStream

  • OutputStream也是输出流的祖类。

  • 用FileOutputStream来封装输出流对象,第一个参数为要写入的文件的地址,第二个参数为写入方式,true表示在文件的末尾追加,false表示覆盖当前文件。

  • write方法传入字节型的数组或者一个int字节(read读出来的int),write方法如果没有写入的目标文件夹会自动创建,有的话直接写入。String转字节型数组的方法为getbytes。

     

        try {
FileOutputStream fos= new FileOutputStream("D:\\java\\F\\fos.txt",true);
String S = "asdfghjkl";
byte[] bytes = S.getBytes();
fos.write(bytes);
fos.close();
}catch(IOException e) {
e.printStackTrace();
}

BufferedOutputStream

  • 用BufferedOutputStream实例化对象时参数必须传入一个OutputStream型的形参,可以是FileOutputStream实例化的对象。

  • write方法中的第一个参数是每次写入的目标文件的字节数,后面两个参数确定了每次写入的实际字节数(大小)。

 

 

		try {
OutputStream out = new FileOutputStream("D:\\java\\F\\fos.txt");
BufferedOutputStream bos = new BufferedOutputStream(out);
InputStream in = new FileInputStream("D:\\java\\F\\F.txt");
BufferedInputStream bis = new BufferedInputStream(in);
byte[] vec = new byte[2];//每次读取的字节数
int ch=0;
while((ch = bis.read(vec))!=-1)
{
bos.write(vec,0,ch);
System.out.println(ch);
}
bos.close();
bis.close();
}catch(IOException e) {
e.printStackTrace();
}

 

posted @ 2022-01-05 11:50  张满月。  阅读(29)  评论(0编辑  收藏  举报