JavaSE---IO | 黄乔国JAVA

7 篇文章 0 订阅

IO处理

编码

GBK编码: 中文占用两个字节,英文占用1个字节
UTF-8编码: 中文占用 3个字节,英文占用1个字节
Java时双字节编码: utf-16be
UTF-16be: 中文占用2个字节,英文占用2个字节
注意:
当你的字节序列时某种编码时,这个时候想把字节序列编程字符串,也需要用这种编码方式,否则会出现乱码
文本文件:就是字节序列
可以是任意编码的字节序列
如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码
联通\联这是一种巧合.正好复合utf-8编码规则

File类

java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称,大小等) 不能用于访问文件内容

常用API

fileObj.exist() 判断文件/文件夹是否存在。
fileObj.delete() 删除文件/文件夹。
File.separator 设置分隔符。(\或/)
fileObj.isFile() 判断是否为文件。(若文件不存在,也返回false)
fileObj.createNewFile() 创建文件。
fileObj.getAbsolutePath() 返回绝对路径。
fileObj.getName() 返回文件/目录的名字。
fileObj.getParent() 返回父目录路径。
fileObj.length()获取文件的大小(字节数),如果文件不存在返回0L,如果是文件夹也返回OL
fileObj.lastModified()获取最后一次修改的时间。
fileObj.isHidden()是否是一个隐藏的文件或是否是隐藏的目录。

还有更多API请参考手册!
注意:
相对路径是相对与工程目录,和Java文件位置无关.
Java.io 默认定位到 工程根目录.

列出文件以及文件夹

删除文件

删除文件夹

RandomAccessFile类

Java提供的对文件内容的访问,既可以读文件也可以写文件
可以访问文件的任意位置.

Java文件模型

在硬盘上的文件是 byte byte byte 存储的,是数据的集合

打开文件


model各个参数详解
* r 代表以只读方式打开指定文件
* rw 以读写方式打开指定文件
* rws 读写方式打开,并对内容或元数据都同步写入底层存储设备
* rwd 读写方式打开,对文件内容的更新同步更新至底层存储设备

写数据数据



读取数据


一次性完全读取数据,适用于数据量小:

分开读取,适用于数据量大:

一次读一行

复制文件

IO

概念


IO理解为INOUT ,即输入与输出.
所以,IO体系的基本功能就是:读和写
IO流
作用: 读写设备上的数据,硬盘文件,内存,键盘,网络…
字节流与字符流
字节流可以处理所有类型数据,如MP3,图片,文字,视频等,读到一个字节就返回一个字节.
在Java中对应的类都以"Stream" 结尾
字符流仅能够处理文本数据,如TXT文本.在读取时读到一个或多个字节先查找指定的编码表,然后将查到的字符返回.
在Java中对应的类都以 “Reader” 或 “Writer” 结尾

流的分类

(1)按照数据流方向不同分为输出流和输出流
(2)按照处理单位不同,可以分为字节流和字符流
(3)按照功能不同可以分为节点流和处理流
说明:
输入:站在程序的角度,有数据读取到程序中
输出:也是站在程序的角度,有数据从程序中输出
节点流:直接从数据源读写数据的流
处理流:连接在已经存在的流(节点流或者处理流)之上的流,说白了就是包裹在别的流上面的流。

四大抽象流类

java中所有的流,都分别继承自以下四种抽象流类

基本操作方法

InputStream的基本方法
read():读取字节,如果返回-1,说明已经读取完毕
close():关闭流
OutputStream基本方法
void write(int b):写入一个字节数据,该字节数据为参数b的低8位。
void write(byte[] b):写入一个字节数组
close():关闭流
void flush():将输出流中的缓存数据全部全部写出到目的地。应该在close()前,调用一下该方法。
Reader的基本方法
int read():读取一个字符,如果返回-1,则说明读取完毕。
close():关闭流
Writer基本方法
void write(int c):写入一个字符数据
close():关闭流
flush():同理在close之前应该调用一下该方法。
具体自己查看API文档。

流的层次





读取文字



写入文字

复制图片

截取音乐

File file = new File("C:\\\\Users\\\\wangs\\\\Desktop\\\\声音玩具 - 你的城市.mp3");
File file1 = new File("./sywj.mp3");//输入流
InputStream inputStream = new FileInputStream(file);//输出流
FileOutputStream fileOutputStream = new FileOutputStream(file1,true);
//起始位置: 比特率*时间*1024/8 => 320*20*1024/8
//20秒开始int start = 320*20*1024/8;//120秒结束int end = 320*120*1024/8;

byte[] bytes = new byte[1024];

int hasRead = 0;
int readTotal = 0;
//读取
while ((hasRead = inputStream.read(bytes)) > 0){
    readTotal += hasRead;
    if(readTotal < start){
        //小于起始位置就直接重新开始
        continue;
    }
    if (readTotal > end){
        //大于结束位置,直接 结束
        break;
    }
    //写入
    fileOutputStream.write(bytes,0,hasRead);
}
//关闭
inputStream.close();fileOutputStream.close(); 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
java jdk api帮助文档中文版 JavaTM Platform Standard Ed. 6 所有类 软件包 java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans.beancontext java.io java.lang java.lang.annotation java.lang.instrument java.lang.management java.lang.ref java.lang.reflect java.math java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.text.spi java.util java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.spi java.util.zip javax.accessibility javax.activation javax.activity javax.annotation javax.annotation.processing javax.crypto javax.crypto.interfaces javax.crypto.spec javax.imageio javax.imageio.event javax.imageio.metadata javax.imageio.plugins.bmp javax.imageio.plugins.jpeg javax.imageio.spi javax.imageio.stream javax.jws javax.jws.soap javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.management javax.management.loading javax.management.modelmbean javax.management.monitor javax.management.openmbean javax.management.relation javax.management.remote javax.management.remote.rmi javax.management.timer javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.net javax.net.ssl javax.print javax.print.attribute javax.print.attribute.standard javax.print.event javax.rmi javax.rmi.CORBA javax.rmi.ssl javax.script javax.security.auth javax.security.auth.callback javax.security.auth.kerberos javax.security.auth.login javax.security.auth.spi javax.security.auth.x500 javax.security.cert javax.security.sasl javax.sound.midi javax.sound.midi.spi javax.sound.sampled javax.sound.sampled.spi javax.sql javax.sql.rowset javax.sql.rowset.serial javax.sql.rowset.spi javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.plaf.synth javax.swing.table javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.tree javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml.bind.helpers javax.xml.bind.util javax.xml.crypto javax.xml.crypto.dom javax.xml.crypto.dsig javax.xml.crypto.dsig.dom javax.xml.crypto.dsig.keyinfo javax.xml.crypto.dsig.spec javax.xml.datatype javax.xml.namespace javax.xml.parsers javax.xml.soap javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stax javax.xml.transform.stream javax.xml.validation javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.xpath org.ietf.jgss org.omg.CORBA org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.portable org.omg.CORBA.TypeCodePackage org.omg.CosNaming org.omg.CosNaming.NamingContextExtPackage org.omg.CosNaming.NamingContextPackage org.omg.Dynamic org.omg.DynamicAny org.omg.DynamicAny.DynAnyFactoryPackage org.omg.DynamicAny.DynAnyPackage org.omg.IOP org.omg.IOP.CodecFactoryPackage org.omg.IOP.CodecPackage org.omg.Messaging org.omg.PortableInterceptor org.omg.PortableInterceptor.ORBInitInfoPackage org.omg.PortableServer org.omg.PortableServer.CurrentPackage org.omg.PortableServer.POAManagerPackage org.omg.PortableServer.POAPackage org.omg.PortableServer.portable org.omg.PortableServer.ServantLocatorPackage org.omg.SendingContext org.omg.stub.java.rmi org.w3c.dom org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle_PHP|JAVA|安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值