一、介绍

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. C++中不可重载的5个运算符

    大多数运算符都是可以重载的,但是有5个运算符C++语言规定是不可以重载的. 1. .(点运算符),通常用于去对象的成员,但是->(箭头运算符),是可以重载的 2.::(域运算符),即类名+域运算 ...

  2. npm ERR!无法安装任何包的解决办法

    npm ERR! Windows_NT 6.1.7601npm ERR! argv "E:\\node\\\\node.exe" "E:\\node\\node_modu ...

  3. 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]

    许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...

  4. SQL SERVER数据库修改是否区分大小写

    昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”.查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认 ...

  5. 【Search for a Range】cpp

    题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...

  6. Windows窗体应用程序(非Console)使用libuv实现简单的异步WEB服务器

    libuv是一个很强大的异步处理框架(严格意义上不能叫框架,其实就是一组异步函数库,当然框架这东西有各种各样的定义和理解_^...),最初的的目的是用于NODEJS的异步处理,不过因为它是一个独立的项 ...

  7. 学习Linux第六天

    1.Shell编程 bash变量: 都是以字符串格式存储 x=5 等号左右不能有空格,会当作命令处理 如何调用: echo $x 此法无法进行数值运算,不存在的变量输出空 set -u 设置变量报错 ...

  8. Memcached使用

    一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网 ...

  9. Altium Designer 使用小结

    今天刚把做好的PCB文件交给工厂去制板,阶段工作告一段落,来一个小总结. 前一段时间复习完C语言之后,在中国知网上搜索用单片机实现的小制作,找比较有意思,又不需要太多外专业知识的东西,然后就相中了超声 ...

  10. .NET设计模式(12):外观模式(Façade Pattern)(转)

    概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依 ...