Java中的I/O流的基本知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的I/O流的基本知识相关的知识,希望对你有一定的参考价值。

参考技术A Java文件操作大全
1.创建文件夹
//import java.io.*;
File myFolderPath = new File(%%1);
try
if (!myFolderPath.exists())
myFolderPath.mkdir();


catch (Exception e)
System.out.println("新建目录操作出错");
e.printStackTrace();


2.创建文件
//import java.io.*;
File myFilePath = new File(%%1);
try
if (!myFilePath.exists())
myFilePath.createNewFile();

FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
myFile.println(%%2);
resultFile.close();

catch (Exception e)
System.out.println("新建文件操作出错");
e.printStackTrace();


3.删除文件
//import java.io.*;
File myDelFile = new File(%%1);
try
myDelFile.delete();

catch (Exception e)
System.out.println("删除文件操作出错");
e.printStackTrace();


4.删除文件夹
//import java.io.*;
File delFolderPath = new File(%%1);
try
delFolderPath.delete(); //删除空文件夹

catch (Exception e)
System.out.println("删除文件夹操作出错");
e.printStackTrace();


5.删除一个文件下夹所有的文件夹
//import java.io.*;
File delfile=new File(%%1);
File[] files=delfile.listFiles();
for(int i=0;i<files.length;i++)
if(files[i].isDirectory())
files[i].delete();



6.清空文件夹
//import java.io.*;
File delfilefolder=new File(%%1);
try
if (!delfilefolder.exists())
delfilefolder.delete();

delfilefolder.mkdir();

catch (Exception e)
System.out.println("清空目录操作出错");
e.printStackTrace();


7.读取文件
//import java.io.*;
// 逐行读取数据
FileReader fr = new FileReader(%%1);
BufferedReader br = new BufferedReader(fr);
String %%2 = br.readLine();
while (%%2 != null)
%%3
%%2 = br.readLine();

br.close();
fr.close();

8.写入文件
//import java.io.*;
// 将数据写入文件
try
FileWriter fw = new FileWriter(%%1);
fw.write(%%2);
fw.flush();
fw.close();
catch (IOException e)
e.printStackTrace();


9.写入随机文件
//import java.io.*;
try
RandomAcessFile logFile=new RandomAcessFile(%%1,"rw");
long lg=logFile.length();
logFile.seek(%%2);
logFile.writeByte(%%3);
catch(IOException ioe)
System.out.println("无法写入文件:"+ioe.getMessage());


10.读取文件属性
//import java.io.*;
// 文件属性的取得
File af = new File(%%1);
if (af.exists())
System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length());
System.out.println(f.isFile() ? "是文件" : "不是文件");
System.out.println(f.isDirectory() ? "是目录" : "不是目录");
System.out.println(f.canRead() ? "可读取" : "不");
System.out.println(f.canWrite() ? "是隐藏文件" : "");
System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified()));
else
System.out.println(f.getName() + "的属性如下:");
System.out.println(f.isFile() ? "是文件" : "不是文件");
System.out.println(f.isDirectory() ? "是目录" : "不是目录");
System.out.println(f.canRead() ? "可读取" : "不");
System.out.println(f.canWrite() ? "是隐藏文件" : "");
System.out.println("文件的最后修改日期为:" + new Date(f.lastModified()));

if(f.canRead())
%%2

if(f.canWrite())
%%3


11.写入属性
//import java.io.*;
File filereadonly=new File(%%1);
try
boolean b=filereadonly.setReadOnly();

catch (Exception e)
System.out.println("拒绝写访问:"+e.printStackTrace());


12.枚举一个文件夹中的所有文件
//import java.io.*;
//import java.util.*;
LinkedList<String> folderList = new LinkedList<String>();
folderList.add(%%1);
while (folderList.size() > 0)
File file = new File(folderList.peek());
folderList.removeLast();
File[] files = file.listFiles();
ArrayList<File> fileList = new ArrayList<File>();
for (int i = 0; i < files.length; i++)
if (files[i].isDirectory())
folderList.add(files[i].getPath());
else
fileList.add(files[i]);


for (File f : fileList)
%%2=f.getAbsoluteFile();
%%3



13.复制文件夹
//import java.io.*;
//import java.util.*;
LinkedList<String> folderList = new LinkedList<String>();
folderList.add(%%1);
LinkedList<String> folderList2 = new LinkedList<String>();
folderList2.add(%%2+ %%1.substring(%%1.lastIndexOf("\\")));
while (folderList.size() > 0)
(new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹
File folders = new File(folderList.peek());
String[] file = folders.list();
File temp = null;
try
for (int i = 0; i < file.length; i++)
if (folderList.peek().endsWith(File.separator))
temp = new File(folderList.peek() + File.separator
+ file[i]);
else
temp = new File(folderList.peek() + File.separator
+ file[i]);

if (temp.isFile())
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(
folderList2.peek() + File.separator
+ (temp.getName()).toString());
byte[] b = new byte[5120];
int len;
while ((len = input.read(b)) != -1)
output.write(b, 0, len);

output.flush();
output.close();
input.close();

if (temp.isDirectory()) // 如果是子文件夹
for (File f : temp.listFiles())
if (f.isDirectory())
folderList.add(f.getPath());
folderList2.add(folderList2.peek()
+ File.separator + f.getName());




catch (Exception e)
//System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();

folderList.removeFirst();
folderList2.removeFirst();
参考技术B 搞清楚两个概念:
字符流(InputStream OutputStream)VS字节流(Reader Writer):分别应用于不同的环境
节点流VS处理流:处理流比节点流有更多的处理方法,所以一般要将节点流封装成处理流
记住那些流常用的地方和转换封装
参考技术C 可以把I/O流想象成管道...本回答被提问者采纳 参考技术D 这忒简单,找个专业人士问问不就行了嘛 第5个回答  2009-05-27 http://wenwen.soso.com/z/q101678745.htm

Java 基本I/O的学习总结(一 是什么)

(一)计算机怎么处理数据---输入输出的(图解)

技术分享图片

 

(二)Java  I/O中的抽象类:

①处理字节流的抽象类【byte】:InputStream和OutputStream

②处理过滤流的抽象类:FilterOutputStream和FilterInputStream

③处理字符流的抽象类【String】:Reader和Writer

④处理压缩流的抽象类:InflaterInputStream和DeflaterOutputStream

  它们之间的关系:

技术分享图片

(三)常用的字节流,字符流

技术分享图片

 

以上是关于Java中的I/O流的基本知识的主要内容,如果未能解决你的问题,请参考以下文章

Java 基本I/O的学习总结(一 是什么)

java I/O流的异常问题

java I/O流基础(知识+代码示例)

java I/O流基础(知识+代码示例)

I/O流的相关知识

java从基础知识I/O