Java探索之旅(14)——文本I/O与读写
1文件类File
❶封装文件或路径的属性。不包括创建和读写文件操作。File实例并不会实际创建文件。不论文件存在与否,可以创建任意文件名的实例。两种实例创建方式如下:
new File("c:\\book");//在目录下创建一个File对象
new File("c:\book\test.text");//以某个文件创建一个File对象
❷构造函数:
File(pathname:String)//为特定路径名创建对象,路径名为目录或者文件
File(String parent,String child)//目录parent的child创建对象,child可以是文件名或者子目录
File(File parent,String child)//目录创建的File对象parent下的child创建对象,child可以是文件名或者子目录
❸对象文件是否存在exsits,可读canRead,可写canWrite(),是否是文件isFile()或者目录isDirectory,是否隐藏isHidden()。返回boolean
❹获得文件名(含后缀)getName(),获得路径名和绝对路径名getpath()(返回创建时候表示路径名或者文件名),getAbsolute()。返回String
❺获得最后修改时间lastModified()《毫秒表示》和文件长度length()。返回Long
❻删除文件delete()和重命名renameTo(File f),替换成f里的文件名。返回Boolean。
❼获得File目录下的文件,返回File[]
定义绝对路径(absolutely)=驱动盘名+目录路径+文件名+文件格式。为了便于与其他平台通用,一般不使用绝对文件名。默认路径为当前路径。
2.写文件类PrintWriter
❶PrintWriter(String );//特定文件名创建,如test.txt
❷PrintWriter(File);//特定文件对象创建
❸print,println,printf写入基本数据类型(Line,Byte,Int,short,long,double,float)以及String,字符数组(使用数组名作参数)。类似于输出到控制台
❹写关闭close()。必须使用,否则无法保存
import java.io.FileNotFoundException;
public class TextIO {
@SuppressWarnings("resource")
public static void main(String[] args) throws FileNotFoundException {
java.io.File file=new java.io.File("test.txt"); //文件写
if(file.exists())
file.delete();//若已经存在该文件即删除
java.io.PrintWriter output=new java.io.PrintWriter(file);
output.println("Ann F Math 92");
output.print("Jack M");
String Jack=new String(" Math 83");
output.println(Jack);
output.close(); } }
3.读文件类Scanner
❶构造函数Scanner(File/String)
❷读关闭close()。可以省略但是建议保留以释放被文件占用之资源
❸是否还有数据可读。hasNext(),hasNextLine()
❹数据读取next*()。如下一个标志(默认),一行Line,Byte,Int,short,long,double,float
数据读取都为令牌读取法,它们均读取用分隔符分分隔的令牌。默认分隔符号为空格,可以使用useDelimiter(String)修改。以nextLine()为例,其读取分隔符开始至行分隔符结束的字符,仅返回行分隔符(window系统,\n)之前的字符,包括空格。
例如:文本文件test.txt包括"34 56\n"。使用Scanner读取文件的方法赋值
Scanner input=new Scanner(new File("test.text"));
int intValue=input.nextInt()://值为34
String s=input.nextLine();//值为“ 56”,含空格。
然而,倘若从控制台输入"34回车56回车"
int intValue=input.nextInt()://值为34
String s=input.nextLine();//值为“”,即为空。
Scanner input=new Scanner(System.in);
mport java.io.FileNotFoundException;
import java.util.Scanner;
public class TextIO {
@SuppressWarnings("resource")
public static void main(String[] args) throws FileNotFoundException { java.io.File file=new java.io.File("test.txt"); //文件读
Scanner input=new Scanner(file);
if(!file.exists())
System.out.println("文件"+file.getName()+"不存在");
while(input.hasNext())
System.out.println("+++Name: "+input.next()+"\n Gender: "+input.next()+"\n Score: "+input.nextLine());
input.close(); } }
输出:
+++Name: Ann
Gender: F
Score: Math 92
+++Name: Jack
Gender: M
Score: Math 83
4.文本替换
将文件text.txt中的人名Jack全部替换成Tom,并将修改后的文件写到test1.txt
package TextIO;
import java.io.*;
import java.util.*; public class TextIO {
public static void main(String[] args) throws FileNotFoundException { java.io.File file=new java.io.File("test.txt");
java.io.File file1=new java.io.File("test1.txt");
Scanner input = null; //文件读
if(!file.exists())
{System.out.println("文件"+file.getName()+"不存在");
System.exit(0);}
else
input = new Scanner(file); //文件写
if(!file1.exists())
file1.delete();//若已经存在该文件即删除
PrintWriter output=new PrintWriter(file1); //文件替换
while(input.hasNextLine())
output.println(input.nextLine().replaceAll("Jack", "Tom")); output.close();
input.close();
} }
结果如下:
Java探索之旅(14)——文本I/O与读写的更多相关文章
- Java探索之旅(5)——数组
1.声明数组变量: double[] array=new double[10]; double array[]=new double[10]; double[ ...
- Java探索之旅(1)——概述与控制台输入
使用的课本: Java语言程序设计(基础篇)----西电 李娜(译) 原著: Introduction to Java Progrmming(Eighth Edition) -----Y.Daniel ...
- Java探索之旅(18)——多线程(2)
1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...
- Java探索之旅(17)——多线程(1)
1.多线程 1.1线程 线程是程序运行的基本执行单元.指的是一段相对独立的代码,执行指定的计算或操作.多操作系统执行一个程序时会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被 ...
- Java探索之旅(16)——异常处理
1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来 ...
- Java探索之旅(15)——包装类和字符类
1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...
- Java探索之旅(13)——字符串类String
1.初始化 String类是Java预定义类,非基本类型而是引用类型. public class StudyString { public static void main(String[] args ...
- Java探索之旅(12)——equals方法及其覆盖
1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...
- Java探索之旅(11)——抽象类与接口
1.Java数据类型 ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括: Primitive变量:boolean,byte, char, doubl ...
随机推荐
- C# unicode GBK UTF-8和汉字互转
界面: 源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Da ...
- 创建美国地区的appleId
参考: https://zhuanlan.zhihu.com/p/36574047 美国人身份信息生成: https://www.fakeaddressgenerator.com/Index/in ...
- 每天一个Linux命令(22)find命令_命令详解
find命令的一些常用参数的常用实例和用时的注意事项. 实例: (1)-name参数: 1)[sunjimeng@localhost home]$ find ~ -name & ...
- mysql 索引技巧
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- Python基础之元组操作
元组的常用操作包括但不限于以下操作: 元组的索引,计数等 这里将对列表的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 type(tuple) 使用dir获取类的 ...
- hdu 2041 超级楼梯(简单dp)
超级楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 使用CSS3制作酷炫防苹果复选框 自行测试!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用kill命令终止进程shell脚本
因有的程序使用kill才能结束掉进程,没有关闭脚本,以我司的服务为例,服务名叫asset-server服务,只有启动脚本,自编写关闭脚本,及重启动脚本. 关闭服务脚本. vim asset-shutd ...
- WingIDE用法笔记
注释代码块 方法一: ''' 被注释的代码块 ''' 方法二: 选中要注释的代码块后 Ctrl + /,则选中的每一行都被# , 用这种方法注释的代码,用Shift + Ctrl + / ...
- 基于DirectShow和FFmpeg的USB摄像头监控软件-转
第一个版本 ### 软件版本及实现功能 0.0.1 1. USB摄像头枚举和设备信息获取2. 实时视频观看3. 24小时不间断录像,录像文件支持暴风影音播放 ### 软件说明: 软件基于 Direct ...