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 ...
随机推荐
- vim时,ctrl+s了一下,程序僵死了
刚刚在用vim的时候,按了ctrl+s,然后僵死了,ctrl+c.ctrl+d都没有反应. 不知怎么回事,差点就把它kill了,想探探究竟,网上查了一下,原来原来,这是个快捷键. ctrl+s 锁定屏 ...
- datawindow直接导入导出xml
long dwcontrol.ImportFile ( XML!, filename ) dw_.Modify("DataWindow.Export.XML.UseTemplate = 't ...
- UIToolbar swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- Valid Palindrome
leetcode:https://oj.leetcode.com/problems/ 今天A了一个Easy类型的,主要是判断一个字符串是否是回文.东平西凑的还是给弄好了,具体可看下面的要求,或者直接去 ...
- 初学MFC
学习使用MFC搭建界面.尝试使用MFC搭建了一个简单的基于对话框的计算器界面,包括模态对话框.非模态对话框.向导对话框等. // MFCApplicationAddDlg.h : 头文件 // #pr ...
- 在FreeBSD上搭建Mac的文件及time machine备份服务
上周将工作用电脑由公司配备的台式机切换到自己低配的macbook air上面,小本本的128G SSD远远不能满足工作的储存需要,但又不舍得入手昂贵的AirPort Time Capsule,于是考虑 ...
- PyDev for Eclipse 简介
PyDev 安装和配置 安装 PyDev 在安装 PyDev 之前,要保证您已经安装了 Java 1.4 或更高版本.Eclipse 以及 Python.接下来,开始安装 PyDev 插件. 启动 E ...
- 【Merge Two Sorted Lists】cpp
题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...
- RobotFramework-调用.py文件
RobotFramework-调用.py文件,直接运行: 注意:文件路径的\全部换成好了/
- poj 1273 Drainage Ditches 最大流入门题
题目链接:http://poj.org/problem?id=1273 Every time it rains on Farmer John's fields, a pond forms over B ...