1. 先分清楚是字节流还是字符流。

字节流:InputStream OutputStream

字符流:Reader Writer

字符流与字节流的区别是读取的单位长度不同,字节流读8字节,字符流读16字节,所以有中文时,就得用字符流。

2. 在字节/字符流基础上,又分为节点流和处理流

节点流:直接和数据源相连。

例如: FileInputStream  FileOutputStream(字节流)

FileReader   FileWriter(字符流)

处理流:顾名思义,就是处理在节点流上加了层处理,所以要有节点流才有处理流。

例如: BufferedInputStream  BufferedOutputStream(字节流)

BufferedReader  BufferedWriter(字符流)

3. 文件读写简单示例

import java.io.*;public classFileRead {public static void main(String[] args) throwsFileNotFoundException {

String filename= "file.txt";

String file_path= System.getProperty("user.dir")+ File.separator + "src" + File.separator +filename;

File file= newFile(file_path);if (!file.exists()){try{//创建文件

file.createNewFile();

FileWriter fll= newFileWriter(file);

BufferedWriter bf= newBufferedWriter(fll);

String a= "hellohello";

bf.write(a+"\r\n"+"niuniu");

bf.flush();

bf.close();

}catch(IOException e) {

e.printStackTrace();

}

}else{

FileInputStream in= null;/** 字节流read*/

//try {//in = new FileInputStream(file);//int b = in.read();//while (b != -1){//System.out.println((char)b);//b = in.read();//}//} catch (FileNotFoundException e) {//e.printStackTrace();//} catch (IOException e) {//e.printStackTrace();//}finally {//try {//in.close();//} catch (IOException e) {//e.printStackTrace();//}

/** 字符流read*/

try{//直接上字符流

FileReader rd = newFileReader(file);

BufferedReader br0= newBufferedReader(rd);//从字节流转为字符流

in = newFileInputStream(file);

InputStreamReader reader= newInputStreamReader(in);

BufferedReader br= newBufferedReader(reader);try{

String line;

line=br.readLine();while (line != null){

System.out.println(line);

line=br.readLine();

System.out.println(br0.readLine());

}

}catch(IOException e) {

e.printStackTrace();

}

}finally{try{

in.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

}

4. 随机存取

/*

* 将内容追加到文件末尾

*/

try{//打开一个随机访问文件流,按读写方式

RandomAccessFile randomFile = new RandomAccessFile(System.getProperty("user.dir") + File.separator + "file.txt", "rw");//文件长度,字节数

long fileLength =randomFile.length();//将写文件指针移到文件尾。

randomFile.seek(fileLength);//在文件末尾加上Task_ID

randomFile.writeBytes((","+Task_ID));

randomFile.close();

}catch(IOException e) {

e.printStackTrace();

}

/*

* 随机访问文件

*/

public static void readFileByRandomAccess(String fileName) {

RandomAccessFile randomFile = null;

try {

// 打开一个随机访问文件流,按只读方式

randomFile = new RandomAccessFile(fileName, "r");

// 文件长度,字节数

long fileLength = randomFile.length();

// 读文件的起始位置

int beginIndex = (fileLength > 4) ? 4 : 0;

// 将读文件的开始位置移到beginIndex位置。

randomFile.seek(beginIndex);

byte[] bytes = new byte[10];

int byteread = 0;

// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

while ((byteread = randomFile.read(bytes)) != -1) {

System.out.write(bytes, 0, byteread);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (randomFile != null) {

try {

randomFile.close();

} catch (IOException e1) {

}

}

}

}

java流读写_java流概述以及文件读写示例相关推荐

  1. java文件流写入文件_JAVA 输入输出流 本地文件读写

    今天学了一下Java的文件的读写. 流名为什么名字都这么长???? 这让我咋么记? 今天我想实现的功能是基本的文件操作,从输入in文件里读取数据,然后程序处理之后输出到out输出文件中,以助于ACM中 ...

  2. java流实例_java流汇总以及使用实例

    流 一.基本概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络) 读入到内存中,形成了流,然后将这些流还可以写到另外的目的 ...

  3. C++文件流:myfstream,fstream,文件读写,随机文件读写【C++文件流】(59)

    文件流 myfstream fstream Test myfstream fstream 流对象的定义 流对象关联文件 open 函数 打开方式 关闭流对象 文件读写 读写文本文件 读写接口 读一字/ ...

  4. java gui 读取文件夹_java Swing GUI 入门-文件读写器

    java Swing GUI 入门-文件读写器 觉得有用的话,欢迎一起讨论相互学习~ 首先创建一个独立的窗口 public CoupPad(){} public static void main(St ...

  5. java 流计算_JAVA流式计算

    JAVA流式计算 流的简单介绍 Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作. 如何生成流 利 ...

  6. qmediaplayer获取流类型_Java 流API

    流相关的接口和类在java.util.stream包中. AutoCloseable接口来自java.lang包. 所有流接口从继承自AutoCloseable接口的BaseStream接口继承. A ...

  7. java文本压缩算法_java 什么算法压缩文件最小

    展开全部 有三种方式实现java压缩: 1.jdk自带的包java.util.zip.ZipOutputStream,不足之处,文件(夹)名称32313133353236313431303231363 ...

  8. JAVA解析stp格式模型_3D模型文件读写.Net SDK

    AnyCAD .Net/C++ SDK支持多种3D/2D文件格式,比如BREP.STEP.IGES.STL.DXF.3DS.OBJ.FBX.SKP.IFC.DAE--等,根据使用场景提供不同的API. ...

  9. java 如何导出json文件_java导出json格式文件的示例代码

    本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下: import java.io.File; import java.io.FileWriter; import java.io. ...

最新文章

  1. [导入]实时数据库的经典书
  2. 运维监控系统——使用API在zabbix监控系统中查看,创建及删除监控主机
  3. 解决SecureCRT中文显示乱码
  4. 关于MVC项目目录结构调整的想法
  5. 【2018.3.31】模拟赛之一-ssl2406 约数【水题】
  6. 如何保证消息队列的高可用?透彻分析源码
  7. 在Asp.net MVC使用jqGrid--代码少点再少点
  8. 中台生态的形成:全面解读技术、研发、移动中台建设
  9. 软件测试需要哪些c语言基础知识,测试人员都需要了解哪些redis知识?
  10. java 睡眠_Java 线程和多线程执行过程分析
  11. 常用的ajax的代码
  12. 死磕jdk源码之如何注释
  13. 用计算机检索生物学文献,文献检索期末复习
  14. 电商后台管理系统——商品管理
  15. 神仙打架!Python web框架大比拼,哪个学习成本低?
  16. linux下使用ls命令时遇到的一个怪异现象
  17. 11年电赛综合测评——单运放三角波发生器
  18. [转]铁路客车列车座位分布
  19. java 用户态_内核启动用户态的程序 - 但行好事 莫问前程 - JavaEye技术网站
  20. 数据连接池contect.xml配置

热门文章

  1. k8s-自动横向伸缩pod 根据CPU使用率,QPS访问数监控指标
  2. 计算机存储数字,计算机是如何存储数字的
  3. mac利用vscode运行c语言程序,Mac下使用VScode编译配置C/C++程序详细图文教程
  4. build 之前执行task_浅谈VS编译自定义编译任务—MSBuild Task(csproject)-阿里云开发者社区...
  5. div和div之间画横线_javascript – jQuery – 使用画布在div之间绘制线条
  6. docker privileged作用_docker总结
  7. 利用代码分别实现jdk动态代理和cglib动态代理_代理模式实现方式及优缺点对比...
  8. mysql按中文拼音字母排序_解析MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...
  9. dataTable删除行
  10. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误