Java IO流
来源:互联网 发布:社交软件下载 编辑:程序博客网 时间:2024/06/08 17:45
java.io
io:in/out.
输入输出的就是字节,这些字节就是我们的程序中的数据。
IO流,即数据流,由序列的一串字节序列。
IO包的核心:输入流
:InputStream,Reader 输出流:OutputStream
,Writer
InputStream和Reader 是输入流,输入是站在程序的角度而言。
例:程序从文件读取数据。
OutputStream和Writer是输出流,输出也是站在程序的角度。
例:程序将当前状态保存到文件。
InputStream和OutputStream是字节流。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
pathname:"C:/Users/user/Desktop/天黑请闭眼.txt"
例如:
创建File对象
例如:
创建File对象
例如
创建File对象
File file = new File("C:/Users/user/Desktop","天黑请闭眼.txt");
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
"file:///C:/Users/user/Desktop/天黑请闭眼.txt" 。
例如
创建File对象
File fileUri = new File("file:///C:/Users/user/Desktop/天黑请闭眼.txt" );
File的字段
pathSeparator和pathSeparatorChar :win下是‘;’,UNIX下是‘:’。
separator 和separatorChar:win下是 '\',UNIX下是‘/’。
TIPS:为了实现跨平台的适应性,我们尽量使用File的这些字段分隔路径名和路径。
File的重要方法:
createNewFile() ,如果我们这个文件不存在,那么创建一个到本地系统。
exists(),获取此文件是否存在。存在返回true,否则为false。
delete() ,删除此File对象所映射的真实文件。
getAbsolutePath() ,获取此对象的绝对路径。
isDirectory() ,判断该File对象,是不是目录(文件夹)。
isFile(),判断该File对象,是不是文件(不是文件夹)。
File(目录)的方法
mkdir() ;创建目录,但是如果父目录不存在,就无法创建
例如:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileDirCopy {
public static void main(String[] args) throws Exception {
//源文件
File src=new File("D://QQ5.5.exe");
//目标地
File tar=new File("C://Users//Uesr//Desktop");
//拷贝
Copy(src,tar);
}
public static void Copy(File src,File tar) throws Exception{
//不能操作,就不管
if(!src.canExecute()){
return ;
}
if(src.isFile()){
//是文件就调用不同文件拷贝
copyFile(src,tar);
}else{
//不是文件就调用目录拷贝
copyDir(src,tar);
}
}
/**
* 拷贝目录
*
* */
public static void copyDir(File src,File tar) throws Exception{
//新建一个目录文件对象
File file=new File(tar,src.getName());
//真实创建目录
file.mkdirs();
//拷贝该目录内的子文件
File[] files=src.listFiles();
for(File f: files){
//调用我们的拷贝文件
copyFile(f,file);
}
}
/**
*
* 文件的复制
* */
public static void copyFile(File src,File tar) throws Exception{
//新创建一个和源文件相同的名字在文件新目录下
File newFile=new File(tar,src.getName());
//在io操作时,会自动创建这个问文件
newFile.createNewFile();
//创建FileOutputStreanm
FileOutputStream fos=new FileOutputStream(newFile);
//创建FileInputStream
FileInputStream fis=new FileInputStream(src);
//先判断有无数据,需要转移
if((fis.available())>0){
//边度编写
byte b=0;
int length=0;
byte[] bytes=new byte[1024];
while((length=fis.read(bytes))!=-1){
fos.write(bytes,0,length);
}
//读取完毕,也写完了
fis.close();
//强制清除去
fos.flush();
fos.close();
}
}
}
字符流:Reader和Writer
Reader方法
read();这个read方法将给予我们以char为单位的读取数据能力。
skip();跳过。
close();关闭流。
readLine();一次读一行。
newLine();标识符,换行。
Writer方法
append(); 添加字符。
write();以字符为单位写入数据。
flush();强制刷新write管道的数据。
close();关闭流。一般将数据写入到文件中,先要调用flush()方法将管道中的数据刷新出去,在调用close()方法关闭流。
readLine();一次读一行。
newLine();标识符,换行。
缓冲流:
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,这些就是缓冲流。
例如:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileBuffer {
public static void main(String[] args) {
//
try {
BufferedInputStream bis=new BufferedInputStream(
new FileInputStream("../java20141218/src/com/feicui/group1/FileDirCopy.java"));
try {
//判断是否有数据
if(bis.available()>0){
//缓冲
if(bis.markSupported()){
bis.mark(2);
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
bis.reset();
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
}
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
OutputStreamWriter:OutputStreamWriter是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节。它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集。 每次调用 write() 方法都会针对给定的字符(或字符集)调用编码转换器。在写入基础输出流之前,得到的这些字节会在缓冲区累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。为了达到最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中以避免频繁调用转换器。
例如: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
io:in/out.
输入输出的就是字节,这些字节就是我们的程序中的数据。
IO流,即数据流,由序列的一串字节序列。
IO包的核心:输入流
:InputStream,Reader 输出流:OutputStream
,Writer
InputStream和Reader 是输入流,输入是站在程序的角度而言。
例:程序从文件读取数据。
OutputStream和Writer是输出流,输出也是站在程序的角度。
例:程序将当前状态保存到文件。
InputStream和OutputStream是字节流。
Writer和Reader是字符流。
File构造方法:File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
pathname:"C:/Users/user/Desktop/天黑请闭眼.txt"
例如:
创建File对象
File file = new File("C:/Users/user/Desktop/天黑请闭眼.txt");
例如:
创建File对象
File files = new File(file,file.getName());
例如
创建File对象
File file = new File("C:/Users/user/Desktop","天黑请闭眼.txt");
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
"file:///C:/Users/user/Desktop/天黑请闭眼.txt" 。
例如
创建File对象
File fileUri = new File("file:///C:/Users/user/Desktop/天黑请闭眼.txt" );
File的字段
pathSeparator和pathSeparatorChar :win下是‘;’,UNIX下是‘:’。
separator 和separatorChar:win下是 '\',UNIX下是‘/’。
TIPS:为了实现跨平台的适应性,我们尽量使用File的这些字段分隔路径名和路径。
File的重要方法:
createNewFile() ,如果我们这个文件不存在,那么创建一个到本地系统。
exists(),获取此文件是否存在。存在返回true,否则为false。
delete() ,删除此File对象所映射的真实文件。
getAbsolutePath() ,获取此对象的绝对路径。
isDirectory() ,判断该File对象,是不是目录(文件夹)。
isFile(),判断该File对象,是不是文件(不是文件夹)。
File(目录)的方法
mkdir() ;创建目录,但是如果父目录不存在,就无法创建
mkdirs() ;创建目录,如果没有父目录,就连父目录一起创建
例如:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileDirCopy {
public static void main(String[] args) throws Exception {
//源文件
File src=new File("D://QQ5.5.exe");
//目标地
File tar=new File("C://Users//Uesr//Desktop");
//拷贝
Copy(src,tar);
}
public static void Copy(File src,File tar) throws Exception{
//不能操作,就不管
if(!src.canExecute()){
return ;
}
if(src.isFile()){
//是文件就调用不同文件拷贝
copyFile(src,tar);
}else{
//不是文件就调用目录拷贝
copyDir(src,tar);
}
}
/**
* 拷贝目录
*
* */
public static void copyDir(File src,File tar) throws Exception{
//新建一个目录文件对象
File file=new File(tar,src.getName());
//真实创建目录
file.mkdirs();
//拷贝该目录内的子文件
File[] files=src.listFiles();
for(File f: files){
//调用我们的拷贝文件
copyFile(f,file);
}
}
/**
*
* 文件的复制
* */
public static void copyFile(File src,File tar) throws Exception{
//新创建一个和源文件相同的名字在文件新目录下
File newFile=new File(tar,src.getName());
//在io操作时,会自动创建这个问文件
newFile.createNewFile();
//创建FileOutputStreanm
FileOutputStream fos=new FileOutputStream(newFile);
//创建FileInputStream
FileInputStream fis=new FileInputStream(src);
//先判断有无数据,需要转移
if((fis.available())>0){
//边度编写
byte b=0;
int length=0;
byte[] bytes=new byte[1024];
while((length=fis.read(bytes))!=-1){
fos.write(bytes,0,length);
}
//读取完毕,也写完了
fis.close();
//强制清除去
fos.flush();
fos.close();
}
}
}
字符流:Reader和Writer
Reader方法
read();这个read方法将给予我们以char为单位的读取数据能力。
skip();跳过。
close();关闭流。
readLine();一次读一行。
newLine();标识符,换行。
Writer方法
append(); 添加字符。
write();以字符为单位写入数据。
flush();强制刷新write管道的数据。
close();关闭流。一般将数据写入到文件中,先要调用flush()方法将管道中的数据刷新出去,在调用close()方法关闭流。
readLine();一次读一行。
newLine();标识符,换行。
缓冲流:
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,这些就是缓冲流。
例如:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileBuffer {
public static void main(String[] args) {
//
try {
BufferedInputStream bis=new BufferedInputStream(
new FileInputStream("../java20141218/src/com/feicui/group1/FileDirCopy.java"));
try {
//判断是否有数据
if(bis.available()>0){
//缓冲
if(bis.markSupported()){
bis.mark(2);
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
bis.reset();
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
System.out.println((char)bis.read());
}
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
OutputStreamWriter:OutputStreamWriter是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节。它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集。 每次调用 write() 方法都会针对给定的字符(或字符集)调用编码转换器。在写入基础输出流之前,得到的这些字节会在缓冲区累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。为了达到最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中以避免频繁调用转换器。
例如: BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
例如: BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
0 0
- JAVA【IO一】IO流
- Java-IO-java的IO流
- java IO 流
- JAVA之IO流
- java IO(字符流)
- java的io流
- JAVA之IO流(
- JAVA 基础IO流
- JAVA 中的IO流
- Java IO 流学习
- JAVA 中的IO流
- Java IO流操作方法。。
- java io流总结
- 转]JAVA IO流
- JAVA IO流
- Java中的IO流
- JAVA IO 流操作
- 详述JAVA IO流
- 剑指offer 面试题24 判断二叉搜索树后续遍历序列
- 个人未来规划
- 标准C基础知识笔记二
- Shell 游戏:贪吃蛇
- Decode Ways
- Java IO流
- 应用多线程的一个有趣的现象
- 4 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] https request error:{}解决方法
- SYN 攻击原理以及防范技术
- POCO::ZIP 压缩与解压缩文件夹
- 18小时内掌握Spark:把云计算大数据速度提高100倍以上!(Final版本)
- DisplayImageOptions中的cacheOnDisc 过时
- python编程规范
- MFC多线程中创建对话框(create)出错(异常)问题的分析及解决办法