File

File类在包java.io.File下、代表操作系统的文件对象(文件、文件夹)。

File类提供了诸如:定位文件,获取文件本身的信息、删除文件、创建文件(文件夹)等功能。

File对象可以定位文件和文件夹

File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的。

实操:

import java.io.File;
import java.text.SimpleDateFormat;public class File_ {public static void main(String[] args) {File file=new File("C:\\Users\\lc2820999194\\IdeaProjects\\The_second\\src\\ViewPicture\\background.jpg");long size=file.length();//是文件的字节大小,返回的是long类型System.out.println(size);//File创建对象,支持绝对路径 支持相对路径(重点)File file1=new File("src\\ViewPicture\\background.jpg");//相对路径:一般定位模块中的文件的, 相对到工程下!!//所以工程名The_second不用写long size1=file1.length();System.out.println(size1);long time=file.lastModified();//获取文件的最后修改时间//规范时间样式System.out.println("最后修改时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));System.out.println(file1.isFile());//是不是文件System.out.println(file1.isDirectory());//是不是文件夹System.out.println(file.getName());//获取文件的名称:带后缀。System.out.println(file.getPath());//获取文件定义的时候使用的路径。System.out.println(file1.getPath());//获取文件定义的时候使用的路径。System.out.println(file1.getAbsolutePath());//获取它的绝对路径。File file2=new File("src\\com\\picture2");File[] vis=file2.listFiles();//获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回for(File temp:vis){System.out.println(temp.getAbsolutePath());}}
}

字符集基础知识

在GBK编码中一个汉字占2个字节,在UTF-8编码中一个汉字占3个字节

编码和解码 

实操:

import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class byte_string {public static void main(String[] args) throws UnsupportedEncodingException {String name="abc我爱你中国";//编码:把文字转换成字节(使用指定的编码)byte[] bytes1=name.getBytes();//以当前代码默认字符集进行编码 (UTF-8)byte[] bytes2=name.getBytes("GBK");//怕你写错,所以需要抛出异常System.out.println(bytes1.length);System.out.println(bytes2.length);System.out.println(Arrays.toString(bytes1));System.out.println(Arrays.toString(bytes2));//解码:把字节转换成对应的中文形式(编码前 和 编码后的字符集必须一致,否则乱码 )String test1=new String(bytes1);String test2=new String(bytes2,"GBK");//指定GBK解码System.out.println(test1);System.out.println(test2);}
}

乱码原因:即编码和解码方式不一致

IO流学习 

I

IO流的分类:

1.原始流

文件字节输入流:FileInputStream

实操:

import java.io.*;public class FileByteInputStream {public static void main(String[] args){File file=new File("src\\com\\File_Io\\testin.txt");//创建一个文件字节输入流管道与源文件接通InputStream i= null;//怕你写错抛出异常,一般运用多态的写法try {i = new FileInputStream(file);byte[] bytes=new byte[(int) file.length()];//file.length()为long类型,这里提醒你是为了防止文件过大int len=i.read(bytes);//bytes相当于一个桶,装着文件字节输入流// i.readAllBytes();JDK9开始可以用此方法读取所有的字节System.out.println(new String(bytes));} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {if(i!=null)i.close();} catch (IOException e) {e.printStackTrace();}}}
}

文件字节输出流:FileOutputStream

实操:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;public class FileByteOutputStream {public static void main(String[] args) {//创建一个文件字节输出流管道与目标文件接通OutputStream os=null;try {os=new FileOutputStream("src\\com\\File_Io\\testout.txt",true);//加true不覆盖原本内容//写数据出去// a.public void write(int a):写一个字节出去os.write('a');os.write(97);os.write("\n".getBytes());//换行// b.public void write(byte[] buffer):写一个字节数组出去。byte[] bytes={'1','2','3','4','5'};os.write(bytes);os.write("\n".getBytes());String s="我是中国人!";os.write(s.getBytes());os.write("\n".getBytes());// c. public void write(byte[] buffer , int pos , int len):写一个字节数组的一部分出去。byte[] bytes1={'6','7','8','9'};os.write(bytes1,1,2);os.write("\n".getBytes());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {// os.flush(); // 写数据必须,刷新数据 可以继续使用流try {if(os!=null)os.close(); // 释放资源,包含了刷新的!关闭后流不可以使用了} catch (IOException e) {e.printStackTrace();}}}
}

拷贝文件

利用上面两种IO流拷贝文件,实操:

import java.io.*;public class CopyFile {public static void main(String[] args) {InputStream ip=null;OutputStream os=null;try {ip=new FileInputStream("D:\\QQMusicCache\\QQMusicPicture\\A1 TRIP_大籽_Lil E_放空_4.jpg");os=new FileOutputStream("D:\\Copy.jpg");//定义一个字节数组转移数据byte[] bytes=new byte[10240];//记录每次读取的字节数int len;while ((len=ip.read(bytes))!=-1){os.write(bytes,0,len);}System.out.println("复制完成!");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {if(os!=null)os.close();} catch (IOException e) {e.printStackTrace();}try {if(ip!=null)ip.close();} catch (IOException e) {e.printStackTrace();}}}
}

File,字符集基础知识,IO流学习(一)相关推荐

  1. Java基础知识——IO流

    简介 IO是指Input/Output,即输入和输出.以内存为中心: Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等 Output指把数据从内存输出到外部,例 ...

  2. Java IO流学习总结二:File

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自[赵彦军的博客] Java IO流学习总结一:输入输出流 J ...

  3. 【Java基础】· IO流习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  4. java io flush_《文件传输基础——Java IO流》,对其中flush方法的思考

    在学习了<文件传输基础--Java IO流> 课程后,发现自己对flush()方法的调用有很多疑惑.在查询资料和自己看源码以及动手试验之后发现有以下几个特点.如有误也请大家指正出来,一切为 ...

  5. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

  6. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  7. Java IO流学习总结七:Commons IO 2.5-FileUtils

    Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...

  8. Java IO流学习总结六:ByteArrayInputStream、ByteArrayOutputStream

    Java IO流学习总结六:ByteArrayInputStream.ByteArrayOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ar ...

  9. Java IO流学习总结(一)—— IO流分类和常用IO流汇总

    Java IO流学习总结(一)-- IO流分类和常用IO流汇总 IO流的分类: - 按流向分类:输入流.输出流 - 按操作对象分类:字节流.字符流 - 按功能分类:节点流.处理流 IO流的设计模式为装 ...

最新文章

  1. AttributeError: module librosa has no attribute output No module named numba.decorators错误解决
  2. ADO.net 中数据库连接方式
  3. 前端学习(1439):vue的helloworld
  4. linux基础知识——环境变量
  5. uml用什么软件画图_什么是建筑效果图,告诉你用什么软件画图和渲染
  6. #C++初学记录#日常学习函数
  7. NavigationBar的显隐和颜色设置
  8. element 使用阿里图标变形了_2TB不限速的阿里网盘App来了 终于不再忍受众生平等盘...
  9. jsp springmvc 视图解析器_SpringMVC 视图解析器
  10. Vs2010中文版安装silverlight5bate方法
  11. 大行bya412和java513_真实解密大行bya412和k3区别在哪里?哪款最好?老司机透漏评测...
  12. 蓝牙4.0BLE 芯片cc2540和cc2541 128x64 oled显示屏驱动
  13. java nio wakeup_Java NIO 的 wakeup 剖析
  14. sena utility Android apk,Sena 30K Utility
  15. Android 进程和文件的UID/GID
  16. stm32 负数_stm32中编码器模式读出“负数”的问题
  17. 100种运营人必备工具(网站搜集)
  18. 华为服务器操作系统筹备开源社区,华为开源服务器操作系统EulerOS 开源社区年内上线...
  19. 网页整体放大/缩小的实现
  20. RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6 (IPv6)

热门文章

  1. keepalived notify_stop 脚本的问题
  2. 京成一品教你辨识骗子创业加盟店(转载)
  3. Windows 10 侧边任务栏宽度调整
  4. 浓浓的咖喱味,你闻着了吗?
  5. MinGW-w64 for Windows(x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z) 离线安装包附安装教程
  6. android获取支付宝登录账号密码错误,Android实现支付宝6位密码输入界面
  7. 图片上传删除图片后再次上传同一个图片不成功
  8. linux查看根目录下所有文件夹大小的方法
  9. SharedUserData
  10. 韩乔生老师的经典语录