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

最新文章

  1. 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
  2. Sharepoint 2013 列表使用JS Link
  3. ASP出500错误怎么办(理论上并不止500错误,其他错误可以同样可以获得更多信息以帮助解决问题)
  4. SOAP和WSDL的一些必要知识(转)
  5. Android涉及到的设计模式
  6. socket 中午吃的啥
  7. 最小较小codeforces 2B The least round way
  8. 1个小时学会ReactiveCocoa基本使用
  9. 来自投资银行的20个Java面试题
  10. highcharts实例教程一:结合php与mysql生成折线图
  11. [React] React Router: Named Components
  12. 在asp.net webservice中如何使用session
  13. 如何为图片添加热点链接?(map + area)
  14. 微信小程序发布
  15. 实验三:分别用for,while;do-while循坏语句以及递归的方法计算n!,并输出算式。
  16. jdbc的入门学习
  17. 使用hibernate原生sql查询,结果集全为1的问题解决
  18. Mycat 中间件配置初探与入门操作
  19. js 正则表达式的使用(标志 RegExp exec() test() compile() $1...$9)
  20. TensorFlow架构学习

热门文章

  1. Note -「线性规划」学习笔记
  2. AI 神经网络学习
  3. vue的事件监听
  4. 『无为则无心』Python面向对象 — 53、对Python中封装的介绍
  5. 渗透测试之本地文件包含(LFI)
  6. Java8新特性系列-默认方法
  7. 1、cpu架构和工作原理
  8. gradle , maven , ant , ivy , grant之间的区别
  9. linux(Centos7)安装mysql
  10. Arava: 用 swing 写一个取色器