据说,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. ORACLE--10G安装问题( error while loading shared libraries)

    01,问题描述 问题一: WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root WARNING: direc ...

  2. android 模拟输入框edittext控件按下回车或扫描头扫描到条码

    edtScan.setText(result); edtScan.onEditorAction(EditorInfo.IME_ACTION_NEXT); 场景:PDA都有扫描头,但有时想用自己的手机来 ...

  3. Visual Studio 调试系列4 单步后退来检查旧应用状态(使用使用 IntelliTrace 窗口)

    系列目录     [已更新最新开发文章,点击查看详细] IntelliTrace 后退会在每个断点处及调试器步骤事件发生时自动拍摄应用程序的快照. 凭借记录的快照便可以返回到上一个断点或步骤,并查看当 ...

  4. js中的super

    1.this和super的区别: this关键词指向函数所在的当前对象 super指向的是当前对象的原型对象 2.super的简单应用 const person = { name:'jack' } c ...

  5. 去掉DataGridView最后一行的空白行,删除空白行

    //不显示出dataGridView1的最后一行空白   dataGridView1.AllowUserToAddRows = false;       直接在LODE事件

  6. js 宏任务和微任务

    .宏任务(macrotask )和微任务(microtask ) macrotask 和 microtask 表示异步任务的两种分类. 在挂起任务时,JS 引擎会将所有任务按照类别分到这两个队列中,首 ...

  7. Python转义序列

    正则表达式参考:https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

  8. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  9. Dozer JAVA的POJO 映射工具

    Dozerhttp://www.manongjc.com/article/50949.html JAVA的映射工具 BeanUtils dozer的使用方法https://blog.csdn.net/ ...

  10. SQL 增、删、改、查语句

    1.SQL SELECT 语句 SELECT语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL SELECT语法 SELECT 列名称 FROM 表名称 以及 SELECT * ...