据说,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 字符流读写文件的更多相关文章

  1. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  2. 第31天学习打卡(File类。字符流读写文件)

    File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法  File(String pathname) File(String parent,String child) ...

  3. Java之字符流读写文件、文件的拷贝

    字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...

  4. Java开发笔记(八十五)通过字符流读写文件

    前面介绍了文件的信息获取.管理操作,以及目录下的文件遍历,那么文件内部数据又是怎样读写的呢?这正是本文所要阐述的内容.File工具固然强大,但它并不能直接读写文件,而要借助于其它工具方能开展读写操作. ...

  5. 161228、Java IO流读写文件的几个注意点

    平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? ...

  6. 161108、Java IO流读写文件的几个注意点

    平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? ...

  7. Java IO流读写文件的几个注意点

     平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不 ...

  8. java字符流实现文件间的内容复制

    package com.io.demo1; import java.io.FileReader; import java.io.FileWriter; public class TestFileSTr ...

  9. Java字符流读写数据的两种方式

    第一种方式:逐个字符进行读写操作(代码注释以及详细内容空闲补充) package IODemo; import java.io.FileReader; import java.io.FileWrite ...

随机推荐

  1. 【对不同形式矩阵的总结】WC 2009 最短路径问题(线段树+矩阵乘法)

    题意 ​ 题目链接:https://www.luogu.org/problem/P4150 ​ 一个 \(6\times n\) 的网格图,每个格点有一个初始权值.有两种操作: 修改一个格子的权值 求 ...

  2. java-int数据的溢出

    数据的溢出: 当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时, 这个整型变量所输出的值将发生紊乱,且不是预期的运行结果. 01 //  整数值如果超出了自己所可以表示范围的最大 ...

  3. chrome浏览器如何查看、修改、删除Cookie

      1.chrome浏览器的cookie保存位置 C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default 快捷键win+r--> ...

  4. 责任链模式Scala的7种实现

    责任链模式是经典的GoF 23种设计模式之一,也许你已经了解这种模式.不管你是否熟悉,建议读者在阅读本文之前,不妨先思考下面三个问题: (1) 如何用多种风格迥异的编程范式来实现责任链模式? (2) ...

  5. Qt Quick 常用元素:RadioButton(单选框),CheckBox(复选框) 与 GroupBox(分组框)

    先介绍一下 ExclusiveGroup. ExclusiveGroup (互斥分组)本身是不可见元素,用于将若干个可选择元素组合在一起, 供用户选择其中的一个选项.你可以在 ExclusiveGro ...

  6. Java8 LocalDateTime和Date相互转换

    很想要用Java的时间api,但有时候还是需要转换为Date. 二者的相互转换并不是一步到位那么简单,所以,还是需要记录一下转换的api Date to LocalDateTime Date toda ...

  7. HyperLogLog算法分析及其应用

    HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的 探索HyperLogLog算法(含Java实现) 神奇的HyperLogLog算法 Sketch of the Day: Hyp ...

  8. SSM基本配置详解

    需要查看SSM基本依赖和完整配置文件的到:SSM基本配置及依赖 示例项目:SSMDemo 1 Spring IOC容器配置 1.1 applicationContext.xml 1.1.1 配置数据源 ...

  9. THUSC2019去不了记

    因为泥萌都去SC了,就我在学校里考水考模拟,所以这就变成了水考模拟游记了 Day1 早上本来要到教室早读,发现教室被由年级前\(100\)的非竞赛生的dalao给占据了,发现聪聪在里面,于是进去愉快的 ...

  10. 【学习笔记】薛定谔的喵咪Cat—球盒问题(全详解)

    [学习笔记]薛定谔的喵咪Cat-球盒问题(全详解) [题目描述] 当一个猫在盒子里时,因为放射物的状态我们不知道,所以猫的状态我们也不知道,这就所谓猫的生死纠缠态,也是所谓的薛定谔的猫. 当我们做需要 ...