据说,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. ros wifi把信号弱的客户端踢出去的脚本

    以下脚本为小于75强度的都踢出去 非capman脚本: /interface wireless registration-table :do {:foreach i in=[find] do={:lo ...

  2. Golang(十)TLS 相关知识(一)基本概念原理

    0. 前言 最近参与一个基于 BitTorrent 协议的 Docker 镜像分发加速插件的开发,主要参与补充 https 协议 学习了 TLS 相关知识,下面对之前的学习做一下简单总结 参考文献:T ...

  3. Linux搭建Nexus仓库+高可用方案

    Linux搭建nexus仓库 1.安装jdk 1.1 获取安装包,解压到指定目录: tar xf jdk.tar.gz -C /opt/export 1.2 配置环境变量: # vim /etc/pr ...

  4. 【转】python 调用super()初始化报错“TypeError: super() takes at least 1 argument”

    一.实验环境 1.Windows7x64_SP1 2.Anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 二.实验步骤 2.1 在python中有如下代码: cl ...

  5. 1+X”中级Web前端证书对应课程分析

    更多精彩内容欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz或者http://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝 ...

  6. 认识MicroBit

    MicroBit是BBC(英国广播公司),为孩子们推出一款开发板,或者叫控制板,可以简单地理解为通过这块电子板,可以控制接在其外围的电子模板,可以读入数据,也可以输出数据,模拟的或数字的数据.这样一来 ...

  7. CentOS升级Python2.6到Python2.7并安装pip[转载]

    貌似CentOS 6.X系统默认安装的Python都是2.6版本的?平时使用以及很多的库都是要求用到2.7版本或以上,所以新系统要做的第一件事必不可少就是升级Python啦!在这里做个简单的升级操作记 ...

  8. 【C++】STL各容器的实现,时间复杂度,适用情况分析

    一.vector 1.概述 动态数组,在内存中具有连续的储存空间,在堆上分配内存,支持快速随机访问,在中间插入和删除慢,但在末尾插入和删除快 2.特点 1)拥有一段连续的内存空间,并且起始地址不变,因 ...

  9. [转帖]几张图让你看懂WebAssembly

    几张图让你看懂WebAssembly https://www.jianshu.com/p/bff8aa23fe4d     (图片来源:giphy.com) 编者按:本文由明非在众成翻译平台上翻译. ...

  10. 【spring boot】spring boot的自定义banner修改+spring boot启动项目图标修改

    1.启动Spring Boot项目后会看到这样的图案,这个图片其实是可以自定义的,打开网站 http://patorjk.com/software/taag/#p=display&h=3&am ...