Java学习笔记之:Java 流
一、介绍
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 流的更多相关文章
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- 6.3(java学习笔记)缓冲流
一.缓冲流 使用缓冲流后的输入输出流会先存储到缓冲区,等缓冲区满后一次性将缓冲区中的数据写入或取出. 避免程序频繁的和文件直接操作,这样操作有利于提高读写效率. 缓冲流是构建在输入输出流之上的,可以理 ...
- 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)
一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...
- 6.4(java学习笔记)转换流
一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...
- Java学习笔记之—Java基础
将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信
- Java学习笔记--通过java.net.URLConnection发送HTTP请求
http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...
- java 学习笔记1 java语言概述及开发环境
高级语言运行机制 高级语言按程序的执行方式分为编译型和解释型两种. java语言比较特殊,Java程序的执行必须经过先编译后解释的步骤. 1 编译生成字节码,只面向JVM(.class) 2Jvm执行 ...
- Java 学习笔记 (三) Java 日期类型
以下内容摘自: https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...
- JAVA学习笔记之JAVA 对象引用以及赋值
关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没 ...
- 8.4(Java学习笔记)java脚本引擎(Rhino)
一.java脚本引擎 java脚本引擎是沟通java和脚本语句之间的桥梁,可以通过对应的脚本引擎在java中调用各种脚本语言. 二.脚本引擎执行脚本代码 ScriptEngineManager:为Sc ...
随机推荐
- python time,string 转换
1. 将字符串转换成时间,字符串格式为05/16/2015 datetime.datetime.strptime(STRING,"%m/%d/%Y") 2. 将时间转换成字符串:格 ...
- xml之XSLT
1.XSLT是什么 XSLT是XSL的子集,XSL是样式表.XSLT的作用:将XML文档转化成HTML,做的是中间转换者. 而主要需要学习的是XSLT(XSLTransformation). 2 ...
- 一些常用到的Centos命令
CentOS常用命令在我们的使用中,经常被使用.所以,我们对一些经常使用又很重要的CentOS常用命令进行了全面的整理.下面,就来介绍这些CentOS常用命令. 一:使用CentOS常用命令查看cpu ...
- 【String to Integer (atoi) 】cpp
题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...
- selenium IDE--录制和回放脚本
1 selenium IDE--录制脚本 准备工作:firefox 浏览器安装了selenium IDE 插件 实例:打开百度搜索“软件测试” firefox浏览器打开网址:https://www.b ...
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
- Codeforces Round #284 (Div. 2)
题目链接:http://codeforces.com/contest/499 A. Watching a movie You have decided to watch the best moment ...
- jquery cdn加速点
新浪jquery cdn加速点: <script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.js">< ...
- vs2010 使用IIS EXPRESS出错.
出现的问题: 解决方法: 左键单击Web项目, 查看属性选项卡, 将 托管管道模式改成Classic就可以了.
- AngularJs学习笔记--bootstrap
AngularJs学习笔记系列第一篇,希望我可以坚持写下去.本文内容主要来自 http://docs.angularjs.org/guide/ 文档的内容,但也加入些许自己的理解与尝试结果. 一.总括 ...