package A10_IOStream;

import java.io.*;

/*
java.io.Writer:字符输出流,是所有字符数出流的最顶层抽象父类
共性方法
void write(int c)
void write(char[] cbuf)
abstract void write(char[] cbuf,int off,int len)
void write(String str)
void flush()刷新该流的缓冲
void close()关闭流,但是要先刷新它
java.io.FileWriter文件字符输出流,继承自OutputStreamWriter继承自Writer
作用:把内存中字符数据写入到文件中
构造方法:
FileWriter(File file)根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append)根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd)构造与某个文件描述符相关联的 FileWriter 对象。
FileWriter(String fileName)根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
字符输出流的使用步骤(重点):
1.创建FileWrite对象,构造方法中绑定要写入数据的目的地
2.使用FileWrite中的write方法,把数据写入到内存缓冲区中(字符转换为字节的过程)
3.使用FileWrite中的flush方法,把内存缓冲区中的数据,刷新到文件中
4.调用close方法释放资源(会先把缓冲区中的数据写入到文件当中)
*/
public class D05_FileWriter {
// 定义一个常量方便全部函数使用
private static final String FILENAME = "Upload\\test.txt"; public static void main(String[] args) throws IOException {
File file = new File(FILENAME);
String fullPath = file.getAbsolutePath(); //文件绝对路径返回 D:\JAVA学习\demo\Upload\test.txt
String path = new File(fullPath).getParent(); //父路径返回 D:\JAVA学习\demo\Upload
File dir = new File(path);
if (!dir.exists() && !dir.isDirectory()) {
dir.mkdirs();
}
// 创建 写入内存 通过flush写出到内存 关闭资源
FileWriter fw = new FileWriter(file);
fw.write(97); //写单个字符
fw.write("我爱北京天安门!"); //写字符串
fw.flush();
fw.close();
// 续写与换行
FileWriter fwa = new FileWriter(FILENAME, true);
for (int i = 1; i < 6; i++) {
fwa.write("\r\n" + "HelloWorld" + i);
}
fwa.close();
exceptionMethod(FILENAME);
myCopy_jkd7(FILENAME, FILENAME + "7");
myCopy_jkd9(FILENAME, FILENAME + "9");
} // 使用try catch finally处理流中的异常
public static void exceptionMethod(String fileName) {
FileWriter fw = null; //先初始化变量
try {
//可能会触发异常的语句
fw = new FileWriter(fileName, true);
fw.write("这是处理异常的函数写入的信息");
} catch (IOException e) {
System.out.println(e);
} finally {
//如果资源不为空则释放资源
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
} /*
使用JDK7中try的新语法实现复制文件
在try后面增加一个括弧,括弧中定义流对象,多个对象用分号隔开
流对象的作用域是try语句块
try中的语句执行完毕,会自动释放流对象,不用写finally处理
格式:
try(定义流对象;定义流对象...){
可能产生异常的语句
} catch(异常类名 变量名){
异常的处理逻辑
}
*/
public static void myCopy_jkd7(String sou, String tar) {
//创建一个输入流、一个输出流
try (FileInputStream fis = new FileInputStream(sou);
FileOutputStream fos = new FileOutputStream(tar);) {
byte[] buff = new byte[1024 * 1024]; //读写缓冲区1024kb
int len;
//分别使用输入流的read方法,输出流的write方法读写文件
while ((len = fis.read(buff)) != -1) {
fos.write(buff, 0, len);
}
} catch (IOException e) {
System.out.println(e);
}
} /*
使用JDK9中try的新语法实现复制文件
在try前定义流对象
在try后面增加一个括弧,引入需要自动释放的对象,多个对象用分号隔开
流对象的作用域是try..catch整个语句块,执行完毕自动释放对象,不用写finally处理
格式:
FileInputStream fis=new FileInputStream(str);
FileOutputStream fos=new FileOutputStream(str);
try(fis,fos){
可能产生异常的语句
} catch(ExceptClass e){
异常的处理逻辑
}
*/
public static void myCopy_jkd9(String sou, String tar) throws IOException {
//创建文件输入流、输出流
FileInputStream fis = new FileInputStream(sou);
FileOutputStream fos = new FileOutputStream(tar);
try (fis; fos) {
byte[] buff = new byte[1024 * 1024]; //读写缓冲区1024kb
int len;
//分别使用输入流的read方法,输出流的write方法读写文件
while ((len = fis.read(buff)) != -1) {
fos.write(buff, 0, len);
}
} catch (IOException e) {
System.out.println(e);
}
} }

0511-FileWrite字符输出流和JDK7中try..finally新的特性的更多相关文章

  1. 字符输出流_Writer类&FileWrite类介绍和字符输出流的基本使用_写出单个字符到文件

    字符输出流_Writer类&FileWrite类介绍 java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性抽象方法: void write(int c) ...

  2. 字符输出流Writer简要概括

    偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...

  3. Java将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    java.io 类 BufferedWriter java.lang.Object java.io.Writer java.io.BufferedWriter BufferedWriter publi ...

  4. 菜鸟译文(三)——JDK6和JDK7中substring()方法的对比

    substring(int beginIndex, int endIndex)方法在JDK6和JDK7中是不同的.了解他们的区别可以让我们更好的使用这个方法.方便起见,以下用substring() 代 ...

  5. JDK6与JDK7中String类subString()方法的区别

    1.subString()方法的作用 subString(int beginIndex, int endIndex)方法的返回的是以beginIndex开始到 endIndex-1结束的某个调用字符串 ...

  6. java 21 - 2 字符输出流

    字符输出流:OutputStreamWriter 构造方法:一共4个,说2个常用的 A:OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 ...

  7. [转]JDK6和JDK7中的substring()方法

    substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...

  8. Web---字节输出流和字符输出流的共存问题、转发、重定向、请求包含知识点讲解

    本章博客的知识点: 1.字节输出流和字符输出流的共存问题 2.转发时,两个servlet都输出信息的问题 详细知识,见OneServlet和TwoServlet源代码中的注释 转发:传参,访问顺序(d ...

  9. JDK6和JDK7中的substring()方法

    substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...

  10. JAVA I/O 字符输出流简要概括

    偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...

随机推荐

  1. n皇后编程问题

    n皇后编程问题是一个经典问题,记得2018年北京航空航天大学计算机学院的博士招聘的上机题目就是这个,这里给出几种实现方法: import time import itertools Num = 8 # ...

  2. php操作sqlite3

    距离上次接触sqlite3已经快一年了,去年这篇文章讲跟着菜鸟教程学python操作sqlite3,https://www.cnblogs.com/lizhaoyao/p/13717381.html ...

  3. 面向 Java 开发人员的 Scala 指南: 构建计算器,第 1 部分

    Scala 的 case 类和模式匹配 Ted Neward, 主管, Neward & Associates 简介: 特定于领域的语言已经成为一个热门话题:很多函数性语言之所以受欢迎,主要是 ...

  4. OneForAll - 功能强大的子域收集工具

    OneForAll,是 shmilylty 在 Github 上开源的子域收集工具,目前版本为 v0.4.3. 收集能力强大,利用证书透明度收集子域.常规检查收集子域.利用网上爬虫档案收集子域.利用D ...

  5. pve 下的群晖虚拟机硬盘空间扩容的记录

    pve下,105号群晖虚拟机,btrfs系统,sata硬盘. 虚拟机容量硬盘130G,扩展至140G,还需要命令行和网页存储管理器界面操作,以实现扩容的目的. df -h Filesystem Siz ...

  6. word常规操作

    为何写标 招标: A公司要买100台电脑 [需求] 投标: 电脑公司看到招标后,就会投标:自我介绍(公司,产品,售后) [自我介绍满足需求] 中标: A公司选择XX公司 [选择] 保密价格内容 不能透 ...

  7. 怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev

    本文引用怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev 在 vscode 设置项中配置 gopls 的 ui.navigation.importShortcut ...

  8. shp转featureclass

    public void ConvertShapefileToFeatureClass() { // Create a name object for the source (shapefile) wo ...

  9. 【Android】谷歌应用关机闹钟 PowerOffAlarm 源码分析,并实现定时开、关机

    前言 RTC RTC 即实时时钟(Real-Time Clock),主要是功能有: 时间保持:RTC可以在断电的时候,仍然保持计时功能,保证时间的连续性 时间显示与设置:RTC可以向系统提供年.月.日 ...

  10. 05C++数据类型

    一.单精度实数float 教学视频A 例程1:金字塔的底是正方形,侧面由四个大小相等的等腰三角形构成.试编一程序,输入底和高,输出三角形的面积. #include <iostream> / ...