一、介绍

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

二、笔记

1.IO

import java.io.File;

/**
* IO流 1.File类:可以操作指定路径的文件,提供了对文件的增删改查
*
*
*
*/
public class IO {
public static void main(String[] args) {
try {
//test();
new IO().check("D:\\ ");
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} public static void test() throws Exception {
String path = "D:\\xx;
// 查看文件
// 获取文件路径方法(在网络路径中才能看出效果)
File file = null;
file = new File(path);
// System.out.println(file.getAbsolutePath());
//
// String[] names = file.list();
// for (String string : names) {
// System.out.println(string);
// } // 获取当前路径下的所有的文件的文件对象
// File[] files=file.listFiles();
// for (File f : files) {
// System.out.println(f.getPath());
// System.out.println(f.getParent());
// } // 创建文件
// path+="\\a.txt";
// file=new File(path);
// boolean result=file.createNewFile();
// System.out.println(result); // 创建文件夹
// path+="\\text";
// file=new File(path);
// boolean result=file.mkdir();
// System.out.println(result); // 递归创建文件夹
// path += "\\text\\abc";
// file = new File(path);
// boolean result = file.mkdirs();
// System.out.println(result); // 重命名,并移动路径
path += "\\abc.txt";
file = new File(path);
file.renameTo(new File("D:\\xx\\abcd.txt"));
} public void check(String path) {
File file = new File(path);
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getAbsolutePath());
}
else {
check(f.getAbsolutePath());
}
}
} }

2.stream

/**
* 流:可以理解数据的滚动,就是一个数据流
1.按方向分(程序员角度):输入流,输出流
2.按处理单位:字节流(OutputStream,InputStream的子类都是字节流),字符流
3.按功能:节点流,
*
*
*
*/
public class Stream { public static void main(String[] args) { try {
// file();
// byteArray();
obj();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} public static void file() {
try {
FileInputStream inputStream = new FileInputStream(new File(
"D:\\xx\\abcd.txt"));
FileOutputStream outputStream = new FileOutputStream(
"D:\\xx\\a.txt");
byte[] bs = new byte[10];
int len = 0;
while ((len = inputStream.read(bs)) != -1) {
// String msg = new String(bs, 0, len);
// System.out.println(msg); outputStream.write(bs, 0, len);
}
inputStream.close();
outputStream.close();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} /**
* 字节数组流是最小单位的流,一般处理不了的都可以用它
*
* @throws IOException
*/
public static void byteArray() throws IOException { String string = "ABCDEFG";
byte[] bs = string.getBytes();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ByteArrayInputStream inputStream = new ByteArrayInputStream(bs); int len = 0;
byte[] r = new byte[2];
// while ((len=inputStream.read())!=-1) {//默认的读取方法,每次读取一个字节
while ((len = inputStream.read(r)) != -1) {
String msgString = new String(r, 0, len);
System.out.println(msgString);
} } // 对象流
public static void obj() throws Exception {
ObjectOutputStream outputStream = new ObjectOutputStream(
new FileOutputStream("D:\\博客\\a.txt"));
User user = new User(20, "tom");
outputStream.writeObject(user);// 如果需要将一个对象写入到流中,需要实现
outputStream.flush();
outputStream.close();
System.out.println("ok");
ObjectInputStream inputStream = new ObjectInputStream(
new FileInputStream("D:\\xx\\a.txt"));
Object object = inputStream.readObject();
if (object instanceof User) {
System.out.println(((User) object).getName());
System.out.println(((User) object).getAge());
}
} // 字符串缓冲流
public static void stringBuffer() throws Exception {
StringBufferInputStream inputStream = new StringBufferInputStream("ABCDE");
int len = 0;
byte[] bs = new byte[1024];
while ((len = inputStream.read(bs)) != -1) {
String msg = new String(bs, 0, len);
System.out.println(msg); }
}
}

3.字符流

/**
* 字符流:只能处理文字类文件,不能处理图片
* 总结
* 1.输入流 输出流
* 2.字节流(OutputStream,InputStream的子类都是字节流)
* 字符流(reader和writer的子类)
* 3.按功能:节点流和处理刘
*
*
*
*/
public class CharacterStream { public static void main(String[] args) {
try {
file();
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} public static void file() throws Exception { FileReader reader = new FileReader(new File("D:\\xx\\abcd.txt"));
FileWriter writer = new FileWriter(new File("D:\\xx\\abcd.txt"));
// while (reader.ready()) {
// System.out.println(reader.read());
// } int len = 0;
char[] cs = new char[1024];
while ((len = reader.read(cs)) != -1) {
System.out.println(new String(cs, 0, len)); }
reader.close();
} public static void buffer() throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(
"D:\\xx\\abcd.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter(
"D:\\xx\\abcd.txt"));
int len = 0;
char[] cs = new char[1024];
while ((len = reader.read(cs)) != -1) {
writer.write(cs, 0, len);
}
while (reader.ready()) {
System.out.println(reader.readLine() + "|||");
writer.write(reader.readLine());
}
reader.close();
writer.close();
}
}

Java学习笔记之:Java 流的更多相关文章

  1. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  2. 6.3(java学习笔记)缓冲流

    一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...

  3. 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)

    一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...

  4. 6.4(java学习笔记)转换流

    一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...

  5. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

  6. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...

  7. java 学习笔记1 java语言概述及开发环境

    高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...

  8. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  9. JAVA学习笔记之JAVA 对象引用以及赋值

      关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没 ...

  10. 8.4(Java学习笔记)java脚本引擎(Rhino)

    一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...

随机推荐

  1. 编译QT时出现lib/libQtGui.so: undefined reference to `ts_read_raw'的解决办法

    lib/libQtGui.so: undefined reference to `ts_read_raw' /lib/libQtGui.so: undefined reference to `ts_o ...

  2. UIPickerView swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  3. messager(消息窗口)

    一.$.messager.alert()类似js中的alert('String') 方法参数:title, msg, icon, function(回调函数) 描述:title头部面板标题.msg主要 ...

  4. WebSocket学习

    在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法 ...

  5. Kibana4学习<二>

    生产环境部署 Kibana4 是是一个完整的 web 应用.使用时,你需要做的只是打开浏览器,然后输入你运行 Kibana 的机器地址然后加上端口号.比如说:localhost:5601 或者 htt ...

  6. 【Insertion Sorted List】cpp

    题目: Sort a linked list using insertion sort. 代码: /** * Definition for singly-linked list. * struct L ...

  7. Zabbix实现微信告警

    zabbix实现微信告警可以分为以下两个步骤: 在百度告警告警平台实现微信告警 将Zabbix接入百度告警平台 微信告警 实现微信告警只需要如下四步: 个人主页关注微信 升级策略配置微信告警 服务管理 ...

  8. Upgrading to Java 8——第一章 Lambda表达式

    第一章 Lambda表达式 Lamada 表达式是Java SE 8中最重要的新特性,长期以来被认为是在Java中缺失的特性,它的出现使整个java 语言变得完整.至少到目前,在这节中你将学习到什么是 ...

  9. UVALive - 7368 Airports DAG图的最小路径覆盖

    题目链接: http://acm.hust.edu.cn/vjudge/problem/356788 Airports Time Limit: 3000MS 问题描述 An airline compa ...

  10. redis.conf配置

    # Redis configuration file example # Redis示例配置文件 # Note on units: when memory size is needed, it is ...