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));//变成字符串输出
	}

}

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vim配置文件vimrc入门介绍

    Vim配置文件vimrc入门介绍本文转载自:vim教程网Vim入门级基础配置-Vim入门教程(1)介绍Vim配置文件.vimrc,配置Vim显示行号、支持utf8中文不乱码、突出显示Vim当前行,设置高亮显示括号匹配和tab缩进,解决Vim粘贴时多出缩进和空格问题。一、Vim配置文件.vimrcVim编辑器相关的所有功能开关都可以通过.vimrc文件进行设置。.vimrc配置文件分系统配置和用户配置两种。系…

    2022年4月30日
    109
  • JQuery的安装与下载教程

    JQuery的安装与下载教程网页中添加jQuery可以通过多种方法在网页中添加jQuery。您可以使用以下方法:从jquery.com下载jQuery库 从CDN中载入jQuery,如从Google中加载jQuery下载jQuery有两个版本的jQuery可供下载:Productionversion-用于实际的网站中,已被精简和压缩。 Developmentversion-用于测试和开发(未压缩,是可读的代码)以上两个版本都可以从jquery.com中下载。…

    2022年5月3日
    45
  • 四阶行列式的计算方法余子式_三阶行列式降价

    四阶行列式的计算方法余子式_三阶行列式降价四阶行列式的计算;N阶特殊行列式的计算(如有行和、列和相等);矩阵的运算(包括加、减、数乘、乘法、转置、逆等的混合运算);求矩阵的秩、逆(两种方法);解矩阵方程;含参数的线性方程组解的情况的讨论;齐次、非齐次线性方程组的求解(包括唯一、无穷多解);讨论一个向量能否用和向量组线性表示;讨论或证明向量组的相关性;求向量组的极大无关组,并将多余向量用极大无关组线性表示;将无关组正交化、单位化;求方阵的特…

    2025年5月27日
    2
  • nema23_关于NEMA SM 23的说明

    nema23_关于NEMA SM 23的说明Unfortunately,NEMASM23isambiguousaboutthepointofresolutionofthecombinedforcesandmoments.Theresolutionpointshavebeeninterpretedtobethefollowingtwopoints:NEMASM23没有给出设备整体校核时所有作…

    2025年8月13日
    2
  • 虚函数后面的分号可有可无_虚函数需要实现吗

    虚函数后面的分号可有可无_虚函数需要实现吗const 和 =0要分开理解.首先理解一下分开的意思成员函数后面用 const 修饰,const表示this是一个指向常量的指针,即对象成为一个常量,即它的成员不能够变化.(默认情况下,this的类型是指向类类型非常量版本的常量指针。例如在Sales_data成员函数中,this的类型是Sales_data *const,即类一旦实例化一个对象后,this指向这个对象,是不能改变的,但是对象…

    2022年8月18日
    8
  • Java实现一个简单的冒泡排序「建议收藏」

    Java实现一个简单的冒泡排序「建议收藏」代码思路创建一个bound,(0,bound)是待排序区间。遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值挪到数组的最后。代码示例importjava.util.Arrays;publicclassSort{publicvoidBubbleSort(int[]arr){//遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值…

    2022年7月8日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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