Java 字符流读写文件
据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定。只能抄抄模板拿来用了。
输入输出流分字节流和字符流。先看看字符流的操作,字节转化为字符也可读写。
一、写入文件
1.FileWriter类:
FileWriter fw=new FileWriter("hello");//在workspace工作空间里创建文件,文件名为hello
FileWriter fw=new FileWriter("E:\\hello");//在E盘创建文件,文件名为hello
FileWriter fw=new FileWriter("E:\\hello.txt");//在E盘创建txt文件hello
如果在相同位置已经有同名文件会覆盖原来的文件,即一个新建的空文件。
如果路径不对则会抛出异常,例如:java.io.FileNotFoundException: Z:\hello (系统找不到指定的路径。)
2.BufferedWriter类:
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。


import java.io.*;
public class MyTest9 {
public static void main(String []args) {
try{
FileWriter fw=new FileWriter("E:\\hello");//在workspace工作空间里创建文件
BufferedWriter bw=new BufferedWriter(fw);//创建bw对象专门为fw对象写入字符流,fw是某个文件引用(对象)
bw.write("Hello world!\n"); //为文件fw写入字符
bw.write('\n');//换行
bw.write("\n");//换行
bw.newLine();//换行,并非所有平台都使用换行符('\ n')来终止行。 因此,调用此方法来终止每个输出行,因此优选直接写入换行符。
bw.write("Oh no!\n");
String s="shoulinniao\n";
bw.write(s);
bw.write(s,0,5);
bw.newLine();
char[] s2=new char[10];
for(int i=0;i<10;i++)
s2[i]=(char)(i+'0');
bw.write(s2);
bw.newLine();
bw.write(s2,0,8);//从0开始截取,截8个长度,即下标0-7
bw.newLine();
int a=19;
bw.write(a);//数字读不进去,要转成字符
bw.newLine();
bw.write(8);
bw.newLine();
bw.write(s.valueOf(a));//转化为字符型
bw.close();//不关掉的话duqu.txt里没东西
}catch(Exception ex){
ex.printStackTrace();
}
}
}
写入文件

二、读出文件
1.File类:
File(String path);//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
String [] list();//返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
String getPath();//将此抽象路径名转换为路径名字符串。
Boolean isAbsolute();//判断是否为绝对路径
Boolean isDirectory();//判断是否为目录
boolean mkdir();//创建由此抽象路径名命名的目录。
boolean mkdirs();//创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。如果目录存在不会重建空目录
import java.io.File;
public class MyTest10{
public static void main(String []args) {
try{
File ffwq=new File("E:\\");//创建代表路径的对象,并不是创建一个文件
File ff=new File("E:\\new_directory3");
ff.mkdirs(); //在路径ff下新建一个目录目录名new_directory
//打印出目录下的内容
if(ffwq.isDirectory()){
String[] de=ffwq.list();
for(int i=0;i<de.length;i++){
System.out.println(de[i]);
}
System.out.println("---------------------------1");
de=ff.list();
for(int i=0;i<de.length;i++){
System.out.println(de[i]);
}
}
System.out.println("---------------------------2");
//取的文件的绝对路径
System.out.println(ff.getAbsolutePath());
//删除对象代表的文件.如果目录下有文件也会返回false,删除不成功也会返回false。
boolean delet=ff.delete(); //目录下是空的才能删除,返回true,否则返回false
System.out.println(delet);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
File类的一些语法


2.FileReader类:
FileReader(File file);//创建一个新的 FileReader ,给出 File读取。
FileReader(String fileName);//创建一个新的 FileReader ,给定要读取的文件的名称。
3. BufferedReader类:
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。
BufferedReader(Reader in);//创建使用默认大小的输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz);//创建使用指定大小的输入缓冲区的缓冲字符输入流。
void close();//关闭流并释放与之相关联的任何系统资源。
String readLine();//读一行字符。
public class MyTest8 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
try{
File f=new File("E:\\hello");//创建文件对象f
FileReader fr=new FileReader(f); //fr对象 对应f的读出
BufferedReader br=new BufferedReader(fr);//br是 对应fr的 读出缓冲区
String shuchu=null;
int i=0;
while((shuchu=br.readLine())!=null){
list.add(shuchu);//用一个数组全部存起来方便修改
System.out.println(shuchu);
}
for(int j=0;j<list.size();j++)
System.out.println(list.get(j));
br.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Java 字符流读写文件的更多相关文章
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- 第31天学习打卡(File类。字符流读写文件)
File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法 File(String pathname) File(String parent,String child) ...
- Java之字符流读写文件、文件的拷贝
字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...
- Java开发笔记(八十五)通过字符流读写文件
前面介绍了文件的信息获取.管理操作,以及目录下的文件遍历,那么文件内部数据又是怎样读写的呢?这正是本文所要阐述的内容.File工具固然强大,但它并不能直接读写文件,而要借助于其它工具方能开展读写操作. ...
- 161228、Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? ...
- 161108、Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? ...
- Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不 ...
- java字符流实现文件间的内容复制
package com.io.demo1; import java.io.FileReader; import java.io.FileWriter; public class TestFileSTr ...
- Java字符流读写数据的两种方式
第一种方式:逐个字符进行读写操作(代码注释以及详细内容空闲补充) package IODemo; import java.io.FileReader; import java.io.FileWrite ...
随机推荐
- swagger案例Swagger案例
pom <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework ...
- C# HTTP系列5 HttpWebResponse.StatusCode属性
系列目录 [已更新最新开发文章,点击查看详细] HttpWebResponse.StatusCode 属性获取响应的状态.对应 HttpStatusCode 枚举值之一. HttpStatus ...
- 说一说switch关键字的奥秘
Switch语法 switch作为Java内置关键字,却在项目中真正使用的比较少.关于switch,还是有那么一些奥秘的. 要什么switch,我有if-else 确实,项目中使用switch比较少的 ...
- 奥展项目笔记02--一个bat文件运行多个java jar包
奥展项目中后端微服务有很多jar包,一个一个启动又费时间效率又低,怎么才能一下让所有的jar包一块运行呢?我们可以编写.bat文件来一键启动. 1.我们将.bat文件放到jar包的同一级目录文件夹中: ...
- [转帖]PostgreSQL的时间/日期函数使用
PostgreSQL的时间/日期函数使用 https://www.cnblogs.com/mchina/archive/2013/04/15/3010418.html 这个博客的 文章目录比上一个好十 ...
- Teradata 数据库介绍
Teradata在整体上是按Shared Nothing 架构体系进行组织的,他的定位就是大型数据仓库系统,定位比较高,他的软硬件都是NCR自己的,其他的都不识别:所以一般的企业用不起,价格很贵.由于 ...
- Gordon家族(二)
本文是 Gordon家族(一) 的续集. 16. GoLearn 介绍:Gordon博士为Go开发者提供了一系列机器学习的库,开箱即用. 地址:https://github.com/sjwhitwor ...
- 解密“CDO-首席数据官”的价值、挑战及发展
数据,不论形态.格式和类型,已经迅速成为企业最有战略意义的资产:数据资产已经成为了可以形成业务洞察及优势的战略资源,数据的体量.多样性和复杂性也正以指数级增长.就像其他重要的企业资产,数据需要适当的管 ...
- JNDI学习总结(一):JNDI到底是什么?
https://blog.csdn.net/wn084/article/details/80729230 分类专栏: JNDI JNDI是 Java 命名与目录接口(Java Naming and ...
- 关于插件Markdown Preview Enhanced的使用技巧
目录 1.关于TOC 2.关于转义符 3.绘图 3.0 绘图配色主题 3.1 Flowchart(流程图) 3.2 Sequence diagram(顺序图) 3.4 保存为HTML shanzm 1 ...