I\O操作
作用:读写设备上数据、硬盘文件、内存、键盘、网络等。
分类:
数据走向:输入流、输出流
数据类型:字符流(文本数据Reader或者Writer结尾)
字节流(所有类型Stream结尾)
1个字节 = 8位二进制 字节是存储信息单位,计量单位
字符:抽象的一个符号
字符集:编码,ANSI编码标准
字节流->字符
FileInputStream fis = new FileInputStream("text.txt");
byte inpyt[] = new byte[21];
fis.read(input);
String inputString = new String(input,"UTF-8");
fis.close();
字符->字节流
FileOutputStream fos = new FileOutputStream("text.txt");
String outString = "";
byte output[] = outString.getBytes("UTF-8");
fos.write(output);
fos.close();
文件拷贝:
FileInputStream fis = new FileInputStream("a.gif");
FileOutputStream fos = new FileOutputStream("b.gif");
byte input[] = new byte[50];
while(fis.read(input)!=-1){fos.write(input);}
fis.close();
fos.close();
缓冲区加速度:
FileInputStream fis = new FileInputStream("");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("");
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte input[] = new byte[100];
while(bis.read(input)!=-1){bos.write(input);}
bis.close();
fis.close();
bos.close();
fos.close();
系统时间返回的是1970年到现在的毫秒数。
优化速度:1、缓冲区大小。2、字节数组的大小。
使用字符流:
FileInputStream fis = new FileInputStream("");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
FileOutputStream fos = new FileOutputStream("");
OutputStreamWriter osw=new OutputStreamWriter(fos);
char input[] = new char[100];
while(isr.read(input)!=-1){int l=0;while((l=isr.read(input))!=-1){osw.write(input,0,l)}}
osw.close();
fos.close();
isr.close();
fis.close();
字符流缓冲:
FileInputStream fis = new FileInputStream("");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isr);
FileOutputStream fos = new FileOutputStream("");
OutputStreamWriter osw=new OutputStreamWriter(fos); //PrintWriter换行输出
BufferedWriter bw = new BufferedWriter(osw);
char input[] = new char[100];
while(input = br.readLine!=null){br.write(input);}
br.close();
bw.flush();
bw.close();
osw.close();
fos.close();
isr.close();
fis.close();
文件的读写(纯文本):
FileReader fr = new FileReader("");
BufferedReader br = new BufferedReader(fr);
RandomAccessFile:
RandomAccessFile raf = new RandomAccessFile(file,"rw");
raf.seek((block-1)*l);->指针
raf.write();
FileUtiles对file的操作特别方便:
File fie = new File("");
String input = FileUtiles.readFileToString(file,"");
FileUtiles.copyFile(file1,file2);
I\O操作的更多相关文章
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...
- js学习笔记:操作iframe
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
随机推荐
- 怪事年年有,今天特别多!org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'empno' not found. Available parameters are [emp, deptno, param1, param
错误: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Binding ...
- 【js】js中判断对数是否为空
1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{ ...
- PHP按权重随机
之前业务部门提了一个需求,要求将广告按照ecpm高低进行随机.(即:ecpm高的获取流量的几率大) 如下数组: //要求AD1的概率要求为50%,AD2概率为25% ,AD3的概率为15%,AD4的概 ...
- Centos 使用yum安装MongoDB 4.0
1.配置MongoDB的yum源 创建yum源文件: #cd /etc/yum.repos.d #vim mongodb-org-4.0.repo 添加以下内容:(我们这里使用阿里云的源) [mngo ...
- CentOS7桌面版系统使用的一些小技巧
1. 清空~/.kde/ 文件下的文件,登陆后不显示桌面的解决方法 在使用CentOS7 桌面系统时,有时候打开文件会很卡.这时我们需要清空当前用户下的 .kde 文件下的所有文件. 再重新登陆该用户 ...
- tensorflow-mnist报错[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法
问题原因: tensorflow提供了tensorflow.exapmles.tutorials.mnist.input_data模块下载mnist数据集.代码如下 如果path路径底下没有mnist ...
- Mac打开Terminal报错-bash : : command not found
问题描述: Mac系统在打开Terminal的时候,报错-bash : : command not found. 问题分析: 报错并不影响Terminal的使用,于是忽略不计.但是在修改.bash_p ...
- THUWC2019 游记
DAY1 开场先看 t1,发现答案的分子就是 \(\sum_i\) 颜色 \(i\) 在 A 中的出现次数乘上颜色 \(i\) 在 B 中的出现次数,分母就是 B 的长度,就去写了一个按颜色的出现次数 ...
- python 多线程 ping
python 多线程 ping 多线程操作可按如下例子实现 #!/usr/bin/env python #encoding: utf8 import subprocess from threading ...
- Codeforces 1092F Tree with Maximum Cost(树形DP)
题目链接:Tree with Maximum Cost 题意:给定一棵树,树上每个顶点都有属性值ai,树的边权为1,求$\sum\limits_{i = 1}^{n} dist(i, v) \cdot ...