JavaIO输入输出学习之一
2011-01-25 21:09
447 查看
一、File类
1.File类是IO保存唯一代表磁盘文件信息的类,而不是文件本身中的内容。
2.File类定义了一些与平台无关的方法来操纵文件。如创建,删除和重命名。
3.java中的目录被当做一种特殊的文件使用,可以用list方法返回目录中的所有子目录和文件名
4.unix下路径分隔符/, dos下为/.
------------
构造方法1:public File(String pathname)实现了Comparable<File>接口。说明可以比较的
static String separator 定义常量 与系统有关的默认名称分隔符,出于方便考虑,它被表示为一个字符串
------------
1.File类的几种基本方法;
getName()获取文件名
getPath() 获取相对路径
getAbsolutePath()绝对路径
getParent()返回目录名
File f=new Flie(“adc//1.txt”)此中有2个斜杠。其中一个为转义符
---------------------
1、文件的创建:
在windows中使用/,
linux中使用的是正/.
File f=new File("d:"+File.separator+“test.txt”) 或是(“d://test.txt”)
f.createNewFile();注意异常的抛出。
2.文件删除:
f.delete(); 在删除前最后使用exists() 方法来测试此文件是否存在。
3.文件夹得创建mkdir() 方法
4.列出指定目录的全部文件:
1>.以字符窜数组形式返回:public String[] list();列出的是文件名字
String [] str=f.list();//列出指定目录中的内容。
for(int i=0;i.str.length;i++){
system.out.println(Str[i]); //循环方式输出
}
2>.以File数组的形式返回:public File【[] listFile()列出的是完整路径
5、isDirectory() 判断是否是目录
-----------------------
1.列出目录下的文件和子目录,子目录下的文件和子子目录。
public static void main(String args []){
File my = new File("d:" + File.separator) ;
print(my) ;
}
public static void print(File file){ // 递归调用
if(file!=null){ // 判断对象是否为空
if(file.isDirectory()){ // 如果是目录
File f[] = file.listFiles() ; // 列出全部的文件
if(f!=null){ // 判断此目录能否列出
for(int i=0;i<f.length;i++){
print(f[i]) ; // 因为给的路径有可能是目录,所以,继续判断
}
}
}else{
System.out.println(file) ; // 输出路径
}
}
二.RandomAccessFiles类
1.File类是对文件的操作,RandomAccessFiles类是对文件内容进行的操作。
2。构造方法之一:RandomAccessFile(File file, String mode)
创建从中读取和向其中写入(可选)的随机存取文件流,该文件由 File 参数指定。mode参数r,w,rw。
3.写入数据
File f = new File("d:" + File.separator + "test.txt") ;
RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"rw") ;
都要使用close()方法
4.读取数据。
skipBytes(int n)
尝试跳过输入的 n 个字节以丢弃跳过的字节。
void seek(long pos)
设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
三。字符流和字节流
1、流的概念:
字节序列的抽象概念。流提供了一种方法。
文件实数解决静态存储形式,流是指数据传输时的形态。
程序中的所有数据都是以流的方式进行传输的或保存,程序需要时使用输入流读取,需要保存时使用输出流完成。
2。字节流和字符流:
如果只用RandomAccessStream操作文件内容太复杂。则可以使用字节流和字符流。
字节流主要使用inputStream和Outputstream类
字符流使用Writer和Reader类
JavaIo类操作文件的步骤:
A。用File类代课一个文件。
B。通过字节流或字符流的子类,指定输出的位置。//子类实例化父类。多态性
c。进行读写操作。
d。关闭输、输入输出流
3.?有了垃圾回收器为什么还要用close()
close()通知系统对象处理资源
java垃圾回收期只能处理自己的垃圾
4、字节流操作的byte数据类型。
OutputStreanm字节输出流最大父类
File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
OutputStream out = null ; // 准备好一个输出的对象
out = new FileOutputStream(f) ; // 通过对象多态性,进行实例化
String str = "Hello World!!!" ;
byte b[] = str.getBytes() ; // 只能输出byte数组,所以将字符串变为byte数组
out.write(b) ; // 将内容输出,保存文件
// 第4步、关闭输出流
out.close() ;
默认是覆盖的。FileOutputStream构造方法中有个Append方法。属性值true是追加内容
5、InputStream读取文件。开辟空间符合文件大小。
如果想知道文件大小。可以使用File类的length()方法。
byte b[]=new byte[(int)f.length()]
5.当不知道文件大小,就读到底:
byte b[] = new byte[1024] ;
int len = 0 ;
int temp = 0 ; // 接收每一个读取进来的数据
while((temp=input.read())!=-1){
// 表示还有内容,文件没有读完
b[len] = (byte)temp ;
len++ ;
}
6字符流的操作:
字符流的操作比字节流操作好一点,就是可以直接输出字符窜,不用进行转换操作
7.字节流和字符流的区别:
字节流操作时本身不会用到缓冲区(内存),是文件本身直接操作,而字符流操作时会使用到缓冲区。
在字节流操作中最后没有使用close(),数据也能输出的。
在字符流操作中没有使用close(),数据没有输出。只有使用了关闭,才能强制刷新缓冲区,然后将内容输出。
也可以手工调用flush方法来操作。
9.在开发中使用哪种流比较好。
在所有硬盘上保存的文件或是传输时候都是以字节方式进行的,而字符只有在内存中才会形成,所以使用字节流是最多的。
10.文件的copy
public class Copy{
public static void main(String args[]){
if(args.length!=2){ // 判断是否是两个参数
System.out.println("输入的参数不正确。") ;
System.out.println("例:java Copy 源文件路径 目标文件路径") ;
System.exit(1) ; // 系统退出
}
File f1 = new File(args[0]) ; // 源文件的File对象
File f2 = new File(args[1]) ; // 目标文件的File对象
if(!f1.exists()){
System.out.println("源文件不存在!") ;
System.exit(1) ;
}
InputStream input = null ; // 准备好输入流对象,读取源文件
OutputStream out = null ; // 准备好输出流对象,写入目标文件
try{
input = new FileInputStream(f1) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
try{
out = new FileOutputStream(f2) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
if(input!=null && out!=null){ // 判断输入或输出是否准备好
int temp = 0 ;
try{
while((temp=input.read())!=-1){ // 开始拷贝
out.write(temp) ; // 边读边写
}
System.out.println("拷贝完成!")
input.close() ; // 关闭
out.close() ; // 关闭
}
}
四。 字节-字符转换流
OutputStreamWriter和InputStreamReader类
五。内存操作流
ByteArrayInputStream
ByteArrayOutputStream类
这两个类是将文件的内容输入输出的位置设置在了内存之上
1、构造方法
ByteArrayInputStream(byte[] buf)
创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
ByteArrayInputStream(byte[] buf, int offset, int length)
创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
2、构造方法摘要
ByteArrayOutputStream()
创建一个新的字节数组输出流。
ByteArrayOutputStream(int size)
创建一个新的字节数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。
void write(int b)
将指定的字节写入此字节数组输出流。
3.编程把一个大写字符窜转化成小写的。
如果想要把一个字符由大写变成小写,需要包装类Charter类static char toLowerCase(char ch)
使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
String str = "HELLOWORLD" ; // 定义一个字符串,全部由大写字母组成
ByteArrayInputStream bis = null ; // 内存输入流
ByteArrayOutputStream bos = null ; // 内存输出流
bis = new ByteArrayInputStream(str.getBytes()) ; // 向内存中输出内容
bos = new ByteArrayOutputStream() ; // 准备从内存ByteArrayInputStream中读取内容
int temp = 0 ;
while((temp=bis.read())!=-1){
char c = (char) temp ; // 读取的数字变为字符
bos.write(Character.toLowerCase(c)) ; // 将字符变为小写
}
// 所有的数据就全部都在ByteArrayOutputStream中
String newStr = bos.toString() ; // 取出内容
try{
bis.close() ;
bos.close() ;
}catch(IOException e){
e.printStackTrace() ;
}
System.out.println(newStr) ;
1.File类是IO保存唯一代表磁盘文件信息的类,而不是文件本身中的内容。
2.File类定义了一些与平台无关的方法来操纵文件。如创建,删除和重命名。
3.java中的目录被当做一种特殊的文件使用,可以用list方法返回目录中的所有子目录和文件名
4.unix下路径分隔符/, dos下为/.
------------
构造方法1:public File(String pathname)实现了Comparable<File>接口。说明可以比较的
static String separator 定义常量 与系统有关的默认名称分隔符,出于方便考虑,它被表示为一个字符串
------------
1.File类的几种基本方法;
getName()获取文件名
getPath() 获取相对路径
getAbsolutePath()绝对路径
getParent()返回目录名
File f=new Flie(“adc//1.txt”)此中有2个斜杠。其中一个为转义符
---------------------
1、文件的创建:
在windows中使用/,
linux中使用的是正/.
File f=new File("d:"+File.separator+“test.txt”) 或是(“d://test.txt”)
f.createNewFile();注意异常的抛出。
2.文件删除:
f.delete(); 在删除前最后使用exists() 方法来测试此文件是否存在。
3.文件夹得创建mkdir() 方法
4.列出指定目录的全部文件:
1>.以字符窜数组形式返回:public String[] list();列出的是文件名字
String [] str=f.list();//列出指定目录中的内容。
for(int i=0;i.str.length;i++){
system.out.println(Str[i]); //循环方式输出
}
2>.以File数组的形式返回:public File【[] listFile()列出的是完整路径
5、isDirectory() 判断是否是目录
-----------------------
1.列出目录下的文件和子目录,子目录下的文件和子子目录。
public static void main(String args []){
File my = new File("d:" + File.separator) ;
print(my) ;
}
public static void print(File file){ // 递归调用
if(file!=null){ // 判断对象是否为空
if(file.isDirectory()){ // 如果是目录
File f[] = file.listFiles() ; // 列出全部的文件
if(f!=null){ // 判断此目录能否列出
for(int i=0;i<f.length;i++){
print(f[i]) ; // 因为给的路径有可能是目录,所以,继续判断
}
}
}else{
System.out.println(file) ; // 输出路径
}
}
二.RandomAccessFiles类
1.File类是对文件的操作,RandomAccessFiles类是对文件内容进行的操作。
2。构造方法之一:RandomAccessFile(File file, String mode)
创建从中读取和向其中写入(可选)的随机存取文件流,该文件由 File 参数指定。mode参数r,w,rw。
3.写入数据
File f = new File("d:" + File.separator + "test.txt") ;
RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"rw") ;
都要使用close()方法
4.读取数据。
skipBytes(int n)
尝试跳过输入的 n 个字节以丢弃跳过的字节。
void seek(long pos)
设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
三。字符流和字节流
1、流的概念:
字节序列的抽象概念。流提供了一种方法。
文件实数解决静态存储形式,流是指数据传输时的形态。
程序中的所有数据都是以流的方式进行传输的或保存,程序需要时使用输入流读取,需要保存时使用输出流完成。
2。字节流和字符流:
如果只用RandomAccessStream操作文件内容太复杂。则可以使用字节流和字符流。
字节流主要使用inputStream和Outputstream类
字符流使用Writer和Reader类
JavaIo类操作文件的步骤:
A。用File类代课一个文件。
B。通过字节流或字符流的子类,指定输出的位置。//子类实例化父类。多态性
c。进行读写操作。
d。关闭输、输入输出流
3.?有了垃圾回收器为什么还要用close()
close()通知系统对象处理资源
java垃圾回收期只能处理自己的垃圾
4、字节流操作的byte数据类型。
OutputStreanm字节输出流最大父类
File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
OutputStream out = null ; // 准备好一个输出的对象
out = new FileOutputStream(f) ; // 通过对象多态性,进行实例化
String str = "Hello World!!!" ;
byte b[] = str.getBytes() ; // 只能输出byte数组,所以将字符串变为byte数组
out.write(b) ; // 将内容输出,保存文件
// 第4步、关闭输出流
out.close() ;
默认是覆盖的。FileOutputStream构造方法中有个Append方法。属性值true是追加内容
5、InputStream读取文件。开辟空间符合文件大小。
如果想知道文件大小。可以使用File类的length()方法。
byte b[]=new byte[(int)f.length()]
5.当不知道文件大小,就读到底:
byte b[] = new byte[1024] ;
int len = 0 ;
int temp = 0 ; // 接收每一个读取进来的数据
while((temp=input.read())!=-1){
// 表示还有内容,文件没有读完
b[len] = (byte)temp ;
len++ ;
}
6字符流的操作:
字符流的操作比字节流操作好一点,就是可以直接输出字符窜,不用进行转换操作
7.字节流和字符流的区别:
字节流操作时本身不会用到缓冲区(内存),是文件本身直接操作,而字符流操作时会使用到缓冲区。
在字节流操作中最后没有使用close(),数据也能输出的。
在字符流操作中没有使用close(),数据没有输出。只有使用了关闭,才能强制刷新缓冲区,然后将内容输出。
也可以手工调用flush方法来操作。
9.在开发中使用哪种流比较好。
在所有硬盘上保存的文件或是传输时候都是以字节方式进行的,而字符只有在内存中才会形成,所以使用字节流是最多的。
10.文件的copy
public class Copy{
public static void main(String args[]){
if(args.length!=2){ // 判断是否是两个参数
System.out.println("输入的参数不正确。") ;
System.out.println("例:java Copy 源文件路径 目标文件路径") ;
System.exit(1) ; // 系统退出
}
File f1 = new File(args[0]) ; // 源文件的File对象
File f2 = new File(args[1]) ; // 目标文件的File对象
if(!f1.exists()){
System.out.println("源文件不存在!") ;
System.exit(1) ;
}
InputStream input = null ; // 准备好输入流对象,读取源文件
OutputStream out = null ; // 准备好输出流对象,写入目标文件
try{
input = new FileInputStream(f1) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
try{
out = new FileOutputStream(f2) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
if(input!=null && out!=null){ // 判断输入或输出是否准备好
int temp = 0 ;
try{
while((temp=input.read())!=-1){ // 开始拷贝
out.write(temp) ; // 边读边写
}
System.out.println("拷贝完成!")
input.close() ; // 关闭
out.close() ; // 关闭
}
}
四。 字节-字符转换流
OutputStreamWriter和InputStreamReader类
五。内存操作流
ByteArrayInputStream
ByteArrayOutputStream类
这两个类是将文件的内容输入输出的位置设置在了内存之上
1、构造方法
ByteArrayInputStream(byte[] buf)
创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
ByteArrayInputStream(byte[] buf, int offset, int length)
创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
2、构造方法摘要
ByteArrayOutputStream()
创建一个新的字节数组输出流。
ByteArrayOutputStream(int size)
创建一个新的字节数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。
void write(int b)
将指定的字节写入此字节数组输出流。
3.编程把一个大写字符窜转化成小写的。
如果想要把一个字符由大写变成小写,需要包装类Charter类static char toLowerCase(char ch)
使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
String str = "HELLOWORLD" ; // 定义一个字符串,全部由大写字母组成
ByteArrayInputStream bis = null ; // 内存输入流
ByteArrayOutputStream bos = null ; // 内存输出流
bis = new ByteArrayInputStream(str.getBytes()) ; // 向内存中输出内容
bos = new ByteArrayOutputStream() ; // 准备从内存ByteArrayInputStream中读取内容
int temp = 0 ;
while((temp=bis.read())!=-1){
char c = (char) temp ; // 读取的数字变为字符
bos.write(Character.toLowerCase(c)) ; // 将字符变为小写
}
// 所有的数据就全部都在ByteArrayOutputStream中
String newStr = bos.toString() ; // 取出内容
try{
bis.close() ;
bos.close() ;
}catch(IOException e){
e.printStackTrace() ;
}
System.out.println(newStr) ;
相关文章推荐
- IO输入输出流学习笔记(第二篇)(JAVA)
- IO输入输出流学习笔记(第一篇)(JAVA)
- 黑马程序员学习笔记JAVA高级视频 IO输入输出字符流之Writer类
- Java 输入输出IO的学习【1】
- JavaIO输入输出学习之二
- JAVA之IO(输入输出)学习
- Java IO学习笔记:概念与原理
- java学习之IO字符流
- java io 的简单输入输出
- Java IO学习笔记(九):BufferedReader和Scanner
- Java IO学习笔记(1)
- 黑马程序员--java学习之io总结
- javaio学习笔记-字符流类(1)
- java IO 学习笔记
- 黑马程序员---Java基础学习笔记(IO-后篇)
- Java IO学习笔记(七):打印流
- Java学习笔记(五):文件IO
- 黑马程序员---Java基础学习笔记IO
- 学习笔记之java.io包中的字符流(上)—— Reader和Writer
- Java学习笔记之IO(十三):对象的序列化和反序列化