Java学习笔记33(IO:打印流,IO流工具类)
打印流:
有两个类:PrintStream PrintWriter类,两个类的方法一样,构造方法不一样
PrintStream构造方法:接收File类型,接收字符串文件名,接收字节输出流(OutputStream)
PrintWriter构造方法:接收File类型,接收字符串文件名,接收字节输出流(OutputStream),接收字符输出流(Writer)
为其他流添加功能,可以方便的打印各种数据值,不同的是,他永远不会抛出IO异常
package com.zs.Demo2;
import java.io.*;
public class Demo {
public static void main(String[] args) {
try {
fun1();
fun2();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void fun2() throws IOException {
FileWriter f=new FileWriter("h:\\a.txt");
//PrintWriter接收字节输出流,也接受字符输出流
PrintWriter p=new PrintWriter(f);
p.write("hello java");
p.close();
}
private static void fun1() throws IOException {
FileOutputStream f=new FileOutputStream("h:\\a.txt");
//PrintStream只接收字节输出流,接收字符输出流时会报错
PrintStream p=new PrintStream(f);
p.write(101);//输出编码后的字符e
p.print(101);//输入什么就是输出什么
p.write("hello world\r\n".getBytes());
p.print("hello java");
p.close();
}
}
打印流复制文件,自动刷新
package com.zs.Demo2;
import java.io.*;
public class Demo2 {
public static void main(String[] args) {
try {
fun();
fun2();
} catch (IOException e) {
e.printStackTrace();
}
}
//打印流自动刷新
private static void fun2() throws FileNotFoundException {
//从下面可以看出,printWriter可以接收字节输出流
PrintWriter pw=new PrintWriter(new FileOutputStream("h:\\a.txt"),true);
//构造方法中第一个参数是文件类型,第二个参数true是是否自动刷新,不需要写flush方法
pw.write("hello world");
pw.close();
}
//打印流复制文件
private static void fun() throws IOException {
BufferedReader fr=new BufferedReader(new FileReader("h:\\a.txt"));
// PrintWriter pw=new PrintWriter("h:\\b.txt",true);报错,开启自动刷新必须参数为File类型
PrintWriter pw=new PrintWriter(new FileWriter("h:\\b.txt"),true);
String s=null;
while ((s=fr.readLine())!=null) {
pw.write(s);
}
pw.close();
fr.close();
}
}
IO流操作工具类:commons工具类(在网上下载)
它是一个操作IO流的类,可以简化代码,就像数组的操作类Arrays,集合操作类Collections类一样,这是IO流操作类,使用前要构建路径,在当前项目下新建lib文件夹,放入commons包,然后eclipse右击该包点击构架路径(buildpath),idea导包:项目下建lib文件夹,放入要导入的包,右击包,Add as library..
package com.zs; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils; import java.io.File;
import java.io.IOException; public class Demo3 {
public static void main(String[] args) {
try {
fun();//文件操作
fun2();//文件名操作
} catch (IOException e) {
e.printStackTrace();
}
} private static void fun2() {
//获得文件名
String name = FilenameUtils.getName("g:\\111\\a.txt");
System.out.println(name);//a.txt
//获得后缀,可以输入文件地址,
String name2 = FilenameUtils.getExtension(name);
System.out.println(name2);//txt
//判断文件后缀
boolean b = FilenameUtils.isExtension("c.java", "java");
System.out.println(b);//true } private static void fun() throws IOException {
//写字符串到文件
FileUtils.writeStringToFile(new File("h:\\a.txt"),"java");
//读文件内容
String s = FileUtils.readFileToString(new File("h:\\a.txt"));
System.out.println(s);
//复制文件夹
FileUtils.copyDirectory(new File("e:\\java.jar"),new File("h:\\赵帅\\java.jar"));
//复制一个文件夹到另一个文件夹,要复制到的文件夹不存在时,会新建文件夹
FileUtils.copyDirectoryToDirectory(new File("h:\\赵帅\\linux"),new File("e:\\cz"));
//复制文件
FileUtils.copyFile(new File("h:\\a.txt"),new File("g:\\a.txt")); }
}
Java学习笔记33(IO:打印流,IO流工具类)的更多相关文章
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- Java学习笔记43(打印流、IO流工具类简单介绍)
打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...
- java学习笔记(7)——I/O流
一.File类 File(File parent, String child); File(Stirng filename); ------------------------------------ ...
- Java学习笔记33(集合框架七:Collections工具类)
数组有工具类,方面操作数组 集合也有工具类:Collections 常用方法示例: package demo; import java.util.ArrayList; import java.util ...
- ArcGIS API for JavaScript 4.2学习笔记[26] 缓冲区分析【基于geometryEngine工具类】
要说GIS空间分析最经典的例子,就是缓冲区分析了. 本例使用geometryEngine来绘制缓冲区环.因为官方给的例子有3D和2D场景,所以就会显得比较复杂. 当鼠标在视图上点击时,就会生成一个缓冲 ...
- Java学习笔记18---final关键字修饰变量、方法及类
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
- Java学习笔记44(多线程一:Thread类)
多线程的概念:略 多线程的目的:提高效率 主线程: package demo; //主线程 public class Demo { public static void main(String[] a ...
- java学习笔记18(基本类型包装类,system类)
基本类型包装类 定义:程序界面用户输入的数据都是以字符串类型存储的,如果需要操作这些字符串进行运算,需要转成基本数据类型,这时就要用到基本类型包装类,例: public class Demo { pu ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
随机推荐
- 多线程总结2之volatile和synchronized(转)
本文转自 http://www.jasongj.com/java/thread_safe/ 一.多线程编程中的三个核心概念 本篇文章将从这三个问题出发,结合实例详解volatile如何保证可见性及一定 ...
- (一)从设计的角度来看ADT(Java)
<数据结构与抽象——Java语言描述>第一章学习笔记 感想:以前学数据结构关注于方法及实现,为了完成作业和手写代码,没有从设计层面考虑过,第一章设计一个bag ADT,借助于Java in ...
- springboot 定时任务部署至linux服务器上后会执行两次问题
springboot定时任务在本地运行时,正常执行且只执行一次,但是在maven打包成war包,部署至linux服务器上之后,定时任务奇怪的执行了两次. 由于未做负载均衡,所以可以先排除是因为多台服务 ...
- oracle 自动备份
此次操作是每分钟备份一张表到新表(测试) 准备: 有一张表name是test 注意事项: 1.任务中调用需要显示声明权限 AUTHID CURRENT_USER 或赋予相应权限 2.单独调用过程成功, ...
- 【Linux】shell学习之sed
sed替换命令 使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换. sed 's/88/--/' filename 将filename每行第一次出现的88用字符串--替换,然后将该文件 ...
- Async:简洁优雅的异步之道
前言 在异步处理方案中,目前最为简洁优雅的便是 async函数(以下简称A函数).经过必要的分块包装后,A函数能使多个相关的异步操作如同同步操作一样聚合起来,使其相互间的关系更为清晰.过程更为简洁.调 ...
- 字符序列(characts)
字符序列(characts) 问题描述: 从三个元素的集合[A,B,C]中选取元素生成一个N 个字符组成的序列,使得没有两个相邻的 子序列(子序列长度=2)相同,例:N=5 时ABCBA 是合格的,而 ...
- 浅谈MVVM
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致. 唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewMod ...
- python格式化日期
#!/usr/bin/python # -*- coding: UTF-8 -*- import time import calendar """ 时间元组(年.月.日. ...
- 把旧系统迁移到.Net Core 2.0 日记(3) - 详解依赖注入 (转)
关于DI 依赖注入, 转载这篇文章, 写得很好的. ----------------------------- DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关 ...