File类的基本操作之InputStream字节输入流

File类的基本操作之InputStream字节输入流

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

话不多少,我直接把代码贴上来了。有什么问题请给我留言

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 字节输出流:OutputStream,整个IO包中字节输出流的最大父类
 * 字节输入流:InputStream
 * 
 * InputStream使用子类FileInputStream。读取
 */
public class InStream1 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File类找到一个文件
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通过子类实例化父类对象
		InputStream in = null;
		in = new FileInputStream(file);//通过对象多态性,进行实例化
		//3.读
		byte[] b = new byte[1024];
		in.read(b);
		//4.关闭
		in.close();
		System.out.println(new String(b));//变成字符串输出
		
		//遗留问题:留了很多空格。没有那么大,开了1024空间,没有内容的为空
	}

}

上一个程序的遗留问题:

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//解决遗留问题
public class InStream2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File类找到一个文件
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通过子类实例化父类对象
		InputStream in = null;
		in = new FileInputStream(file);//通过对象多态性,进行实例化
		//3.读
		byte[] b = new byte[1024];
		
		int len = in.read(b);//读取内容
		//4.关闭
		in.close();
		
		//解决遗留问题,看String提供的方法
		System.err.println("读入数据的长度:" + len);
		System.out.println(new String(b,0,len));//变成字符串输出
		
		//能不能依据文件大小来开辟空间呢? 
	}

}

解决依据文件大小来开辟空间

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//解决依据文件大小来开辟空间
public class InStream3 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		//第1步:使用File类找到一个文件
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通过子类实例化父类对象
		InputStream in = null;
		in = new FileInputStream(file);//通过对象多态性,进行实例化
		//3.读
		byte[] b = new byte[(int) file.length()];  //解决依据文件大小来开辟空间
		
		int len = in.read(b);//读取内容
		//4.关闭
		in.close();
		
		//解决遗留问题,看String提供的方法
		System.err.println("读入数据的长度:" + len);
		System.out.println(new String(b));//变成字符串输出
	}

}

仅仅适合知道文件大小的输入

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//仅仅适合知道文件大小的输入
public class InStream4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File类找到一个文件
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通过子类实例化父类对象
		InputStream in = null;
		in = new FileInputStream(file);//通过对象多态性,进行实例化
		//3.读
		byte[] b = new byte[(int) file.length()];  //解决依据文件大小来开辟空间
		for (int i = 0; i < b.length; i++) {
			b[i] = (byte) in.read();
		}
//		int len = in.read(b);//读取内容
		//4.关闭
		in.close();
		
		//解决遗留问题,看String提供的方法
		System.out.println(new String(b));//变成字符串输出
	}

}

当不知道读取内容有多大的时候,就仅仅能以读取的数据是否为-1为读完的标志

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//当不知道读取内容有多大的时候,就仅仅能以读取的数据是否为-1为读完的标志
public class InStream5 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		//第1步:使用File类找到一个文件
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通过子类实例化父类对象
		InputStream in = null;
		in = new FileInputStream(file);//通过对象多态性,进行实例化
		//3.读
		byte[] b = new byte[1024];  //解决依据文件大小来开辟空间
		int len = 0;
		int temp = 0;//接受每一个读取进来的数据
		while ((temp = in.read())!= -1) {
			//表示还有内容,文件没有读完
			b[len] = (byte) temp;
			len++ ;
		}
		//4.关闭
		in.close();
		
		//解决遗留问题,看String提供的方法
		System.out.println(new String(b,0,len));//变成字符串输出
	}

}

贴的太快了~几乎吧程序关了~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118773.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Iscsiadm解析

    Iscsiadm解析1.#iscsiadm-mdiscovery-tst-p192.168.4.109:3260发现新增target-m模式discovery-t类型(iSCSI3discoverytypes:SendTargets,SLP,andiSNS)-T目标名称stsendtargets发送目标-p…

  • java socket发送中文乱码_java Socket接收数据乱码问题「建议收藏」

    java socket发送中文乱码_java Socket接收数据乱码问题「建议收藏」));}问题:1.此出输出的数据与我发送的数据不一致2.如果我用strSql=String.valueOf(buffer,0,nDataLen-1);则输出的是方块3.同样我用另外一个程序测试端口6789的数据,打印出来的也是方块,不知道是什么原因,请各位老大帮帮忙分析一下原因,三叩首了!!![/B]测试程序:importjava.nio.channels.ServerSocketCh…

  • php artisan 命令报错,什么命令都是这个错误,cmd下运行也不行,又没看到语法错误…

    php artisan 命令报错,什么命令都是这个错误,cmd下运行也不行,又没看到语法错误…

    2021年10月10日
  • c语言return两个数_c语言里return0有什么用

    c语言return两个数_c语言里return0有什么用c语言return能不能有2个以上返回值c语言return能不能有2个返回值比如说return(a,b)更新时间:2019-05-1806:19最满意答案不是,要想返回2个以上返回值,建议返回值用数组或者参数用指针模式,直接改写2011-05-04回答其他回答如果你想返回多值的话,建议使用数组或指针(数组其实也是指针)2011-05-04回答不能的,除非你定义一个结构typedefstru…

    2022年10月27日
  • PropertyDescriptor 详解

    PropertyDescriptor 详解PropertyDescriptor详解](http://blog.csdn.net/z69183787/article/details/8443777)转自http://blog.csdn.net/z69183787/article/details/8443777packagecom.zhoushun;importjava.lang.reflect.Method;importjava

  • JavaScript 高级程序设计(第3版)

    JavaScript 高级程序设计(第3版)内容简介ECMAScript5和HTML5在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript增添了很多适应未来发展的新特性。《JavaScript高级程序设计(第3版)》这一版除增加5章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一。全书从JavaScript语言实现的各个组成部分——语言核心、DOM、BOM、事件模…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号