Java 多字节文件流
发布网友
发布时间:2022-04-26 16:53
我来回答
共2个回答
热心网友
时间:2023-10-15 12:32
你楼上那个会不会啊?你这个是文件输入流,哪来的length?有什么用》?我知道有length 那个是字节大小,循环遍历是read--------看资料
* 例子:通过字节输入流读取文件信息
* 1、创建字节输入流对象
* InputStream in = new FileInputStream("d:\\aa.txt");
* 2、创建字节数组作为从流中读取数据的容器
* byte[] bs = new byte[1024];
* 3、循环从流中读取数据
* while(in.read(bs)!=-1){
* 你要进行的数据操作
* }
* 4、关闭字节输入流
* in.close();
*
* 缓存流:给流操作提供缓存器,提高效率
* 创建缓存流对象的语法:
* InputStream in = new FileInputStream("d:\\aa.txt");
* BufferedInputStream bis = new BufferedInputStream(in);
---不是说循环length是大小,read是读取输出,多练就明白了
import java.io.*;
public class Ztext {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建文件对象
File fs=new File("D:/fs.txt");
FileInputStream fis=null;
try {
//从文件读取到内存
fis=new FileInputStream(fs);
//定义字节数组,以1024为单位读取,可改
byte[] bs = new byte[1024];
//得到实际读取到的字节数,因为事先不知道文件大小
//当为-1的时候跳出死循环
int n = 0;
while((n=fis.read(bs))!=-1){
//把字节转成String 这样可以在控制台输出
String s=new String(bs,0,n);
//可以看看read帮助文档,n代表实际读取
System.out.println(s);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
-----------------下面是输入到文件-------------------------
import java.io.*;
public class Ztext {
/**
* @param args
*/
public static void main(String[] args) {
File f=new File("d:/fs.txt");
FileOutputStream fs=null;
try{
fs=new FileOutputStream(f);
String s="字符串可从其他地方获得";
// byte [] bs=new byte[1024];
fs.write(s.getBytes());
System.out.println("成功输入字符到文件");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
fs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
--从一个txt文件读取到另一个txt文件
import java.io.*;
public class Ztext {
/**
* @param args
*/
public static void main(String[] args) {
File f1=new File("d:/fs.txt");
File f2=new File("d:/ss.txt");
FileInputStream fin=null;
FileOutputStream fs=null;
try{
//从fs读取到内存再从内存write到ss
fin=new FileInputStream(f1);
fs=new FileOutputStream(f2);
byte [] bs=new byte[1024];
int n=0;
while((n=fin.read(bs))!=-1){
fs.write(bs);
}
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
fin.close();
fs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
--如果你希望输入到文件回车换行可以加\t\n
--最后,后面还有字符对象流不多讲,自己慢慢学,包自己引啊
热心网友
时间:2023-10-15 12:32
FilterInputStream类的构造方法是
protected FilterInputStream(InputStream in) {
this.in = in;
}
注意关键字protected则它的构造方法只能在类内或被子类直接访问。
解决上述问题的方案是用FilterInputStream的之类替代FilterInputStream,然后再调用,或许有用,不过好像它的有些子类这个构造方法也是protected修饰的。