黑马程序员_IO流-字符流的学习(一)
来源:互联网 发布:centos 五笔 编辑:程序博客网 时间:2024/06/06 18:35
------------------------------android培训、java培训、期待与您交流! ----------------------------------------------------------------
字符流:
1. 字符流两个基类:
Writer Reader
找到一个专门用于操作文件的Writer子类对象。FileWriter。 后缀名是父类名。 前缀名是该流对象的功能。
2. 实例:
写入文件Writer
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
java.io.FileWriter
需求:在硬盘上,创建一个文件并写入一些文字数据(字符串)。
import java.io.*;
class FileWriterDemo
{
publicstatic void main(String[] args) {
FileWriterfw = new FileWriter("demo.txt");
}
//结果: 一定出现IO异常
创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖
//第二步: 调用write方法,将字符串写入到流中。写到流中,写到内存中了,并没有写到目的地.
import java.io.*;
class FileWriterDemo
{
publicstatic void main(String[] args) throws IOException
{
FileWriterfw = new FileWriter("demo.txt");
fw.write("abcde");
}
}
//要将数据写入目的地中, 刷新流对象中的缓冲中的数据。
import java.io.*;
class FileWriterDemo
{
publicstatic void main(String[] args) throws IOException
{
FileWriterfw = new FileWriter("demo.txt");
fw.write("abcde");
fw.flush();
}
}
//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
//将数据刷到目的地中。
//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
//java调用”写”的动作时,也必须调用系统中的”写”动作,则必须使用完资源后关闭.
import java.io.*;
class FileWriterDemo
{
publicstatic void main(String[] args) throws IOException
{
FileWriterfw = new FileWriter("demo.txt");
fw.write("abcde");
fw.close();
}
}
需求:IO异常处理:
import java.io.*;
class FileWriterDemo2
{
public static void main(String[]args)
{
try
{
FileWriter fw = new FileWriter("demo.txt");
fw.write("abcdefg");//都会有异常
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());//简单处理.
}
}
}
//fw.close();关流的动作一定会执行的,放finally中
try
{
fw = newFileWriter("demo.txt");
fw.write("abcdefg");
}
catch (IOException e)
{
System.out.println("catch:"+e.toString());
}
finally
{
fw.close(); //发生异常没处理
}
}
}
//运行时会出错,
Exception in thread"main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type IOException
at com.demo.io.FileWriterDemo2.main(FileWriterDemo2.java:22)
//此时有三个代码块,第一个代码块中定义的FileWriter fw 其他代码块中访问不到.改成
// 在外面建立引用,在try内建立初始化,则fw 能作用于全局,
//最后正确的代码是:
package com.demo.io;
import java.io.*;
class FileWriterDemo2
{
public static void main(String[] args)
{
FileWriter fw = null;
try
{
fw = new FileWriter("demo.txt");
fw.write("abcdefg");
}
catch (IOException e)
{
System.out.println("catch:"+e.toString());
}
finally
{
try
{
if(fw!=null)//有可能fw对象没有建成
fw.close();
}
catch (IOException ex)
{
// TODO Auto-generatedcatch block
ex.printStackTrace();
}
}
}
}
}
需求:演示对已有文件的数据续写。
import java.io.*;
class FileWriterDemo3
{
public static void main(String[] args)
{
FileWriter fw = null;
try
{
//传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。
FileWriter fw = new FileWriter("demo.txt",true);
fw.write("nihao\r\nxiexie");//”\r\n” 表示换行
fw.close();
}
catch (IOException e)
{
System.out.println("catch:"+e.toString());
}
finally
{
try
{
fw.close();
}
catch (IOException ex)
{
// TODO Auto-generatedcatch block
ex.printStackTrace();
}
}
}
}
补充: 处理异常的三种方式: e.printStackTrace()是打印异常堆栈信息,能够完整的输出各种异常,是程序员规范的代码写作形式
通过调用异常的getMessage()方法,可以获取执行程序所抛出异常的详细信息。
catch (IOException e)
{
// System.out.println("catch:"+e.toString());//第一种方式 效果同: System.out.println("catch:"+e);
// System.out.println("catch:"+e.getMessage());//第二种放式
e.printStackTrace();//第三种方式
}
------------------------------android培训、java培训、期待与您交流! ----------------------------------------------------------------
--
- 黑马程序员_IO流-字符流的学习(一)
- 黑马程序员_IO流之字符流的学习
- 黑马程序员_IO流-字符流的学习(二)
- 黑马程序员_IO流-字节流的学习(一)
- 黑马程序员_IO流一
- 黑马程序员_IO流(一)
- 黑马程序员_IO流的学习
- 黑马程序员_IO流之字符流
- 黑马程序员_IO流字符流
- 黑马程序员_IO流之字符流
- 黑马程序员_IO流字符流-缓冲区
- 黑马程序员_IO流的概述和字符流
- 黑马程序员_IO流-字符流的的缓冲区学习(三)
- 黑马程序员_IO流(一)
- 黑马程序员_IO流(一)
- 黑马程序员_IO流(一)
- 黑马程序员_IO流(一)
- 黑马程序员_IO流(一)
- 驱动开发之六 --- 一个简单的显示驱动之六 【译文】
- web.xml完整配置文件带注释(已配置错误页)
- ring0启动一个Win32进程 【译文】
- 女性贫血致胸平 家常美食补血丰胸
- Windbg对过滤驱动DriverEntry函数下断点技巧 【zt】
- 黑马程序员_IO流-字符流的学习(一)
- HDU2069 Coin Change,背包
- Native Application 开发详解(精华)
- C语言局部变量和全局变量
- 给CSDN博客创建谷歌自定义搜索引擎
- C#自定义事件的步骤介绍,何时使用委托和接口
- ROC曲线及AUC评价指标
- 黑马程序员_IO流-字符流的学习(二)
- HDU1284 钱币兑换问题,背包问题