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();
}

12.19 file 与io流的更多相关文章

  1. File(IO流)

    import java.io.File; import java.io.IOException; import org.junit.Test; /** *java.io.File类 *1.凡是与输入输 ...

  2. 乐字节Java之file、IO流基础知识和操作步骤

    嗨喽,小乐又来了,今天要给大家送上的技术文章是Java重点知识-IO流. 先来看看IO流的思维导图吧. 一. File 在Java中,Everything is Object!所以在文件中,也不例外! ...

  3. 21.File和IO流

    IO就可以对文件进行读写 File表示要读写的文件在哪,也可以对文件进行创建,删除等操作 小结: IO流是什么? 1.可以将数据从本地文件中读取出来 2.可以将数据从内存保存到本地文件 File类时什 ...

  4. File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?

    重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...

  5. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

  6. Java基础知识回顾之六 ----- IO流

    前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...

  7. java IO流(一)

    一.IO流概述 1 什么是IO流 (流就是通道对象) IO - Input(输入) Output(输出) 在Java的IO中,流是一个很形象的概念,就像水流一样. 当程序需要读取数据的时候,就会开启一 ...

  8. IO流的工具类

    1.需要先导入jar包: FilenameUtils import org.apache.commons.io.FilenameUtils; public class FilenameUtilesDe ...

  9. IO流——递归(输出所有文件)

    package pers.zbb.File; import java.io.File; public class FileDemo { public static void main(String[] ...

随机推荐

  1. Go语言程序调试

    1. Go语言二进制程序分析    在分析一些使用GOlang语言进行编译的恶意程序时,由于程序在被打包成二进制程序时会打包诸多引用的库,并且作者对二进制程序进行了去符号化,导致在动态或是静态分析时函 ...

  2. [WPF] 使用 Effect 玩玩阴影、内阴影、 长阴影

    最近在学习怎么用 Shazzam Shader Editor 编写自定义的 Effect,并试着去实现阴影.内阴影和长阴影的效果.结果我第一步就放弃了,因为阴影用到的高斯模糊算法对我来说太太太太太太太 ...

  3. 古典密码之凯撒密码and换位密码

    凯撒密码: 密文:wuhdwb lpsrvvleoh 算法:Ci=E(pi)=(pi+3)mod 26 明文:TREATY IMPOSSIBLE 例如ABCD这四个字母要进行加密,如果我们设置它的偏移 ...

  4. 【windows 访问控制】开篇、访问控制模型模型

    访问控制模型的各个部分 访问控制模型有两个基本部分: 访问令牌,其中包含有关已登录用户的信息 安全描述符,其中包含用于保护安全对象 的安全信息 用户登录时 ,系统会对用户 的帐户名和密码进行身份验证. ...

  5. vue electron 运行时报错Cannot find module 'fs/promises'的解决方法

    项目已经上线半年了,全省多地使用,突然出现的问题,最后发现是因为使用的 electron-updater 因为版本号没有锁定,突然之间就报了上面的错误,不管我怎么升级node都没用(哈哈,node本身 ...

  6. Chaoter07 面向对象 (Object)

    目录 Chapter07 面向对象 7.1 类与对象 7.1.1 对象在内存中的存在形式 (重要) 7.1.2 属性 / 成员变量 7.1.3 类与对象的内存分配机制(重要) Object03 Obj ...

  7. JZ-016-合并两个排序的链表

    合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目链接: 合并两个排序的链表 代码 /** * 标题:合并两个排序的链表 ...

  8. sql数据处理

    安装pymysql 读取数据库数据进行pandas操作,并用seaborn和matplotlib进行画图

  9. 通过媒体查询来实现 WPF 响应式设计

    WPF 客户端经常需要运行在各种不同大小屏幕下,为了显示友好,所以开发的时候都需要考虑响应式设计. 布局往往通过指定比例,而不直接指定准确的大小来实现响应式布局(如 Width="3*&qu ...

  10. react 也就这么回事 05 —— 组件 & Props

    什么是组件:用来实现局部功能的可复用代码片段 比如很多界面会用到"分页"功能,因此可以将它封装成独立的组件 这样用到分页的界面只需引入该组件而不必重新写代码 1 定义组件 在 Re ...