其他分享
首页 > 其他分享> > I/0流 字节流

I/0流 字节流

作者:互联网

I/O流 (输入/输出):

                                   2. 输出流 Outputsteam

                                                             2. 节点流:从特定地方读写的流类,

                                                                            例如:磁盘或一块内存区域

                                                             3. 过滤流:使用一个已经存在的输入流或者输出流连接创键的输入流

                                                                                或者输出流叫过滤或者处理流,它要对相连的另一个流进行

                                                                                某种转换。

                                                              4. OutputStream是抽象顶层父类,不能实现实例化,因此实现功能是由派生子类

 

 

 

                                        read(byte [] b) (将数据读入字节数组b中,返回所读字节数)

                                   2. close()(数据读取完成,关闭流)

                                   3. available() (返回未读的字节数)

                                   4. long skip (long n) (跳过(扔掉)n个字符)

                                   5. mark(int) (标记当前流,并建立int大小缓冲区)

                                   6. void reset() (返回标签处)

                                   7. 字节流数组用toString避免乱码

 

package src;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestFileInputStream1
{

public static void main(String[] args) throws IOException
{
FileInputStream fin=new FileInputStream("data.dat");//创建字节输入流对象fin
int c,count=0;
while ((c=fin.read())!=-1)  //读一个字节,如果不为-1,就没有达到文件末尾
{
System.out.print((char) c);//以字符形式输出。如果有汉字,输出为乱码,因为一个汉字占两个字节
count++;
}
System.out.println("\n共读取"+count+"个字节");
fin.close();//关闭fin;
}

}
​----------------------------
package src;
import java.io.*;
public class TestFileInputStream3
{

public static void main(String[] args)
{
try
{      
FileInputStream fin = new FileInputStream("data.dat");//创建字节输入流对象fin
byte buf[] = new byte[fin.available()];////创建字节数组,长度为fin中未读的字节数。
int count; //记录实际读取字节数
count=fin.read(buf);  //从文件输入流fin中读取字节数据
//count=fin.read(buf,0,buf.length); //从文件输入流fin中读取字节数据到buf数组
System.out.println("共读取"+count+"个字节");
System.out.print(new String(buf));
fin.close(); //关闭fin输入流
}
catch (IOException ioe)
{
System.out.println("I/O异常");
}

}

}
 

       输出流:

 

                            2. write(byte[]b) (向输出中写一个字节数组)

                            3. write(byte b,int offset, int length) (将字节数组b中由offset和length指示的数据块写入)

                            4. fluch() (将强制将缓存的输出数据写出去)

                  注意:必须将字符串转换为字节数组。

                             例:byte buf []=字符串.getBytes();

 

 

package src;
import java.io.*;
public class TestFileOutputStream1
{

public static void main(String[] args)
{
try
{            
FileOutputStream fout = new FileOutputStream("data.dat");//创建文件输出流对象fout
String str="more and more";
byte buf[] = str.getBytes();//将字符串str转化为字节数组
for (int i=0;i<buf.length;i++)
   fout.write(buf[i]); //逐个字节写入
System.out.print("写入文件成功!");
fout.close(); //关闭fout
}
catch (IOException ioe)
{
System.out.println("I/O异常");
}

}

}
​----------------------------
package IOinputStream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class outStream1
{
   public static void main(String[] args) throws Exception
  {
       FileOutputStream fileOutputStream=new FileOutputStream("d:/A.txt");
       String s="写入成功";
       byte [] a=s.getBytes();//将字符串str转化为字节数组
       //fileOutputStream.write(a);
       fileOutputStream.write(a,0,a.length);
       System.out.println(a);
       fileOutputStream.close;//关闭
  }
}

总结:

                        2. read(byte [] b) 因为读取的字节数在数组中,可以直接读取。

                          例:记录读取字节数=对象.read(数组名)

                        2. write(byte [] b) : 直接读取。

                            例:对象.write(数组);

 

标签:字节,fin,write,byte,buf,读取
来源: https://www.cnblogs.com/zjwcoblogs/p/16528038.html