广州小妹,柚木家具的优缺点,省钱屋
说白了,就是一个io库,基于java原生io。来进行操作,内部做了优化,简洁,高效。所以受到了一部分人的喜欢和使用
读写文件。
private void readfile() { try { inputstream in = new fileinputstream(new file("/sdcard/a.txt")); // new bytearrayinputstream(("adasfdsaf").getbytes()); //2.缓冲源 source source = okio.source(in); //3.buffer buffer sink = new buffer(); source.read(sink, in.read()); //4.将数据读入buffer system.out.print(sink.readutf8()); }catch (exception e){ system.out.print("error " + e.getmessage()); e.printstacktrace(); } } private void writefile(){ bufferedsink bsink = null; try { boolean iscreate = false; file file = new file("/sdcard/a.txt"); if (!file.exists()) { iscreate = file.createnewfile(); } else { iscreate = true; } //写入操作 if (iscreate) { sink sink = okio.sink(file); bsink = okio.buffer(sink); bsink.writeutf8("1"); bsink.writeutf8("\n"); bsink.writeutf8("this is new file!"); bsink.writeutf8("\n"); bsink.writestring("我是每二条", charset.forname("utf-8")); bsink.flush(); } system.out.print("success"); }catch (exception e){ e.printstacktrace(); system.out.print("error " + e.getmessage()); }finally { try { if (null != bsink) { bsink.close(); } }catch (ioexception e){ e.printstacktrace(); } } }
file file = new file("/sdcard/a.txt"); sink sink = okio.sink(file);
1、定义文件,
2、传入文件,sink内部,创建一个文件写入流 new fileoutputstream(file)的
3、传递流对象给okio的sink方法。返回一个sink 的接口的匿名对象,对象中提供的方法,可以访问到传入的流,对流进行操作。(write,flush,close)
bufferedsink bsink = okio.buffer(sink);
bsink.writeutf8("testtest");
1、构造一个 realbufferedsink 对象,并传入接口sink的接口对象。
2、调用 realbufferedsink 对象的,write方法,写数据。
3、在realbufferedsink对象内部,维护有一个 okio.buffer 对象,写入方法,首先写入buffer内部。然后调用 sink的write方法进行写入到流中。
4、这里的okio.buffer,用于高效复制的时候使用。
inputstream in = new fileinputstream(new file("/sdcard/a.txt"));
//2.缓冲源 source source = okio.source(in); //3.buffer buffer sink = new buffer(); source.read(sink, in.read()); //4.将数据读入buffer system.out.print(sink.readutf8());
1、传入文件流,返回一个 source接口对象,接口方法中使用了 传入的流进行操作。(read,close)
2、构造一个buffer对象。用于对source接口对象,进行操作,buffer中包含更多方法。
3、调用 source的read方法,先创建一个数据段(segment),然后从流中读取数据,写入到数据段中。
4、readutf8,从数据段中读取数据,这里涉及到了一个判断,(根据当前数据读取位置和需要读取的数据的长度,进行判定,如果当前数据段已经读完,就需要释放下一个数据段,供下次读取。)
implementation 'com.squareup.okio:okio:1.9.0'
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio 解决logcat无过滤工具栏的操作
Android Studio 恢复小窗口停靠模式(Docked Mode)
Android studio保存logcat日志到本地的操作
Android Studio快捷键生成TAG、Log.x日志输出介绍
网友评论