Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92534
  • 博文数量: 81
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1007
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 14:50
文章分类

全部博文(81)

文章存档

2014年(21)

2013年(60)

我的朋友

分类: Java

2014-01-03 16:40:57

  Stream (流): 数据从一端到另一端

  字节流: 读写二进制的对象

  字符流: 读写的都是字符 方法:Reader Write

  文件: 相关记录数据的集合

  JAVA.io.File

  **************************************

  java.io.file的常用方法:

  File(File parent,String child) 文件路径和文件对象

  File(File parent) 只创建一个文件路径

  File(String parentname)

  File(String parent,String child)

  public String getPath()

  public String getParent()

  public String getAbsolutePath()

  public boolean exists()

  public long length()

  public boolean createNewFile() throws IOException

  public boolean mkdir() throwsIOException

  **************************************

  InputStream 输入流它是一个抽象类

  重要方法:

  read() 从输入流中读取下一个数据字节

  read(byte[] b) 读取一定数量的字节并将其存储在缓冲区数组b中

  available() 返回输入流方法的下不受阻塞而读取的字节数

  skip(long n) 跳过和放弃输入流中的N个数据字节

  mark(int readlimit) 在此输入流中标记当前的位置

  reset() 将此输入重新定位到对此输入流最后调用mark方法时

  的位置

  close() 关闭输入流并释放所有系统资源

  **************************************

  OutputStream 输出流

  重要方法:

  write(int b) 将指定的字节写入输出流

  flush() 刷新输出流强制写出所有缓冲的输出字符

  close() 关闭输出流并释放所有系统资源

  **************************************

  FilterInputStream 和 FilterOutputStream

  目的:增加原有类的功能使其读(写)得更快而且更有效

  FileInputStream 文件输入流

  用FileInputStream 读文本文件(1)

  引入相关的类

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.FileInputStream;

  构造一个文件输入流对象

  InputStream fileobject = new FileInputStream(“text.txt”);

  用FileInputStream 读文本文件(2)

  利用文件输入流类的方法读取文本文件的数据

  fileobject.available(); //可读取的字节数

  fileobject.read(); //读取文件的数据

  关闭文件输入流对象

  fileobject.close();

  例:

  public static void main(String[] args) throws IOException {

  int size;

  InputStream fileobject = new FileInputStream(args[0] );

  System.out.println(“可读取的字节数: "

  + (size = fileobject.available()));

  char[] text = new char[200] ;

  for (int count = 0; count < size; count++) {

  text[count] = ((char) fileobject.read());

  System.out.print(text[count]);

  }

  System.out.println("");

  fileobject.close();

  }

  **************************************

  FileOutputStream 文件输出流

  用FileOutputStream 写文本文件(1)

  引入相关的类

  import java.io.IOException;

  import java.io.OutputStream;

  import java.io.FileOutputStream;

  构造一个文件输出流对象

  OutputStream fos = new FileOutputStream("Text.txt");

  用FileOutputStream 写文本文件(2)

  利用文件输出流的方法写文本文件

  String str ="好好学习Java";

  byte[] words = str.getBytes();

  fos.write(words, 0, words.length);

  关闭文件输出流

  fos.close();

  例:

  public static void main(String[] args) {

  try {

  String str ="好好学习Java";

  byte[] words = str.getBytes();

  OutputStream fos = new FileOutputStream("Text.txt");

  fos.write(words, 0, words.length);

  System.out.println("Text文件已更新!");

  fos.close();

  } catch (IOException obj) {

  System.out.println("创建文件时出错!");

  }

  }

  *************************************************

  过滤一个流

  重要的过滤流--------缓冲流

  缓冲字节流:

  BufferedInputStream

  BufferedOutputStream

  用BufferedReader 读文本文件 (1)

  引入相关的类

  import java.io.FileReader;

  import java.io.BufferedReader;

  import java.io.IOException;

  构造一个BufferedReader对象

  FileReader fr=new FileReader("mytest.txt");

  BufferedReader br=new BufferedReader(fr);

  利用BufferedReader的方法读取文本文件的数据

  br.readLine(); //读取一行数据,返回字符串

  关闭相关的流对象

  br.close();

  fr.close();

  例:

  /**创建一个FileReader对象.*/

  FileReader fr=new FileReader("mytest.txt");

  /**创建一个BufferedReader 对象.*/

  BufferedReader br=new BufferedReader(fr);

  /**读取一行数据.*/

  String line=br.readLine();

  while(line!=null){

  System.out.println(line);

  line=br.readLine();

  }

  /**流的关闭.*/

  br.close();

  fr.close();

  *********************************

  用BufferedWriter 写文本文件

  引入相关的类

  import java.io.FileWriter ;

  import java.io.BufferedWriter ;

  import java.io.IOException;

  构造一个BufferedWriter对象

  FileWriter fw=new FileWriter("mytest.txt");

  BufferedWriter bw=new BufferedWriter(fw);

  利用BufferedWriter的方法写文本文件

  bw.write (“hello”);

  相关流对象的清空和关闭

  bw.flush();

  fw.close();

  例:

  /**创建一个FileWriter 对象*/

  FileWriter fw=new FileWriter("mytest.txt");

  /**创建一个BufferedWriter 对象*/

  BufferedWriter bw=new BufferedWriter(fw);

  bw.write("大家好!");

  bw.write("我正在学习BufferedWriter。");

  bw.newLine();

  bw.write("请多多指教!");

  bw.newLine();

  bw.write(“好好学习VCDP");

  bw.flush();

  fw.close();

  //////////////////////////////////////////////////////

  字符流类

  Reader和Writer

  FileReader和FileWriter

  BufferedReader和BufferedWriter

  //////////////////////////////////////////////////////

  习题:在D盘里创建一个AAA文件夹,在文件夹里在建一个T1文件夹,在T1建一个a.txt文件

  Import java.io.*

  class A

  {

  public static void main(String args[]) throws IOException

  {

  File f=new File("D:\\AAA\\t1");

  if(!f.exists()){//判断有无此文件夹,在就复盖,无创建

  f.mkdirs();//一次性可创建多个文件夹,若只创建一个文件夹

  用f.mkdir()

  }

  File nextFile=new File(f,"a.txt");//在文件夹里创建一个a.txt文

  件

  nextf.createNewFile(); //createNewFile()是创建文件的

  方法

  ///////////////////////////////////////

  读文件

  File a=new File("D:\\AAA\\t1\\a.txt");

  inputStream in=new FileInputStream(a);

  in.read();//一个字节一个字节读反回ASCII码

  int n=in.available()

  StringBuffer s=new StringBuffer

  for(int i=0;i<=n;i++)

  {

  char(in.read());//将int转成Char型或String+空格

  s.append(char(in.read));//返回所有字符内容

  }

  System.out.println(s);//将所有字符内容打印

  //////////////////////

  若有中文的将上读文件替换

  int n=in.available();

  byte b[]=new byte[];

  in.read[a];//一次性读入

  String s=new String (b);

  System.out.println(s);

  //////////////////

  写文件

  File file =new File("D:\\AAA\\t1\\a.txt");

  OutputStream out=new FileOutputStream(file);

  Strint s="Hello";

  out.write(s.getBytes());

  out.close();//关闭流

  }

  }

  ///////////////////////////////////////////////////////////////////

  1> 构建如下目录

  d:\hello\t1\a.txt

  d:\hello\t1\b.txt

  d:\hello\t1\c.txt

  import java.io.*;

  class A

  {

  public static void main(String[] args) throws IOException

  {

  File f=new File("D:\\hello\\t1");

  if(!f.exists())

  {

  f.mkdirs();

  }

  File f1=new File(f,"a.txt");

  f1.createNewFile();

  File f2=new File(f,"b.txt");

  f2.createNewFile();

  File f3=new File(f,"c.txt");

  f3.createNewFile();

  }

  }

  2> 使用流写入如下内容

  a.txt

  hello World

  MyWorld

  b.txt

  XXX学校

  XX中心

  c.txt

  学号:XX

  名字:XX

  import java.io.*;

  class B

  {

  public static void main(String[] args) throws IOException

  {

  File f=new File("D:\\hello\\t1\\a.txt");

  OutputStream out=new FileOutputStream(f);

  String str="hello World\r\nMyWorld";

  out.write(str.getBytes());

  out.close();

  File f1=new File("D:\\hello\\t1\\b.txt");

  OutputStream out1=new FileOutputStream(f1);

  String str1="XXX学校\r\nXX中心";

  out1.write(str1.getBytes());

  out1.close();

  File f2=new File("D:\\hello\\t1\\c.txt");

  OutputStream out2=new FileOutputStream(f2);

  String str2="学号:XXX\r\n名字:XXX";

  out2.write(str2.getBytes());

  out2.close();

  }

  }

  3>使用流读入C盘下的所有文件夹和文件,将所有的文件夹名和文件名写入到String[]中,

  在控制台上打印。并写入到d:\c盘内容.txt文件中去

  import java.io.*;

  public class C {

  public static void main(String[] args) throws IOException{

  File ff =new File("d:\\c盘内容.txt");

  ff.createNewFile();

  File file =new File("c:\\");

  String ary[]=file.list();

  String a="";

  for(String b: ary){

  a=a+b+"\r\n";

  }

  OutputStream out = new FileOutputStream(ff);

  out.write(a.getBytes());

  out.close();

  }

  }

  ??????????????????????????????/流的复习

  java.io

  类 PrintStream

  java.lang.Object

  java.io.OutputStream

  java.io.FilterOutputStream

  java.io.PrintStream

  PrintStream(File file)

  创建具有指定文件且不带自动行刷新的新打印流。

  PrintStream(File file, String csn)

  创建具有指定文件名称和字符集且不带自动行刷新的新打印流。

  PrintStream(OutputStream out)

  创建新的打印流。

  PrintStream(OutputStream out, boolean autoFlush)

  创建新的打印流。

  PrintStream(OutputStream out, boolean autoFlush, String encoding)

  创建新的打印流。

  PrintStream(String fileName)

  创建具有指定文件名称且不带自动行刷新的新打印流。

  PrintStream(String fileName, String csn)

  创建具有指定文件名称和字符集且不带自动行刷新的新打印流。

  System.out - 标准输出流 显示器 OutputStream

  System.in - 标准输入流 键盘 InputStream

  PrintStream System.out = PrintStream(System.out)

  void print(Object obj)

  打印对象。

  void print(String s)

  打印字符串。

  PrintStream printf(Locale l, String format, Object... args)

  使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

  PrintStream printf(String format, Object... args)

  使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

  void println(int x)

  打印整数,然后终止该行。

  void println(long x)

  打印 long,然后终止该行。

  字节流--8 位 字节的方式读写 - 适用于一切情况

  InputStream OutputStream

  读取二进制很方便

  Java - char -> 16位

  字符流--16 位 Unicode 主要用于读写字符串

  Reader Writer

  public abstract class InputStream

  read() 读字节

  available() 查询可用字节数

  close() 关闭流

  //InputStream的自类必须实现的方法

  abstract 方法

  skip() 空方法

  mark() 空方法

  reset() 空方法

  BufferedInputStream 实现过skip()mark()reset()

  FileInputStream 没有实现过 skip()mark()reset()

  //////////////////////////////////////////////////

  public abstract class OutputStream

  write() abstract 方法

  close() abstract 方法

  flush() 空方法

  FileOutputStream 没有实现过 flush()

  BufferedOutputStream 实现过flush()

  ///////////////////////////////////////////////////

  1> Java中流分字节流和字符流 java.io.*

  字节流--8 位

  InputStream OutputStream

  字符流--16 位 Unicode

  Reader Writer

  2> 输入流 - 从 源 到 程序 源 - XXXInputStream

  XXXReader sdudd0103

  输出流 - 从 程序 到 目的地 目的地- XXXOutputStream

  XXXWriter

  过虑流 - 用于加强已有输入输出流的功能

  输入型

  输出信

  BufferedInputStream br =

  new BufferedInputStream(new FileInputStream("文件

  名"));

阅读(310) | 评论(0) | 转发(0) |
0

上一篇:JAVA编程艺术

下一篇:JAVA基础练习

给主人留下些什么吧!~~