Java IO 的readLine

本文详细解析了Java IO基础概念及其在HDFS文件接口中的应用,包括使用Path进行路径操作,FSDataIOutputStream追加写入,FSDataInputStream逐行读取,以及BufferedReader与InputStreamReader的结合使用。同时,通过JavaFile01类实例展示了InputStream的基本读取方法,并对比了BufferedReader与普通InputStream的区别与优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一致疏于JAVA IO方面的基础学习。

 

这次在使用到HDFS的文件接口的时候,就遇到这方面的问题。

 

于是巩固一下基础。

 

java io是典型的decorator设计模式。

 

Path path = new Path(“路径”);

FSDataIOutputStream fdos = fs.append(path); //追加

fdos.write……即可

fdos.flush();//刷出数据

  

FSDataInputStream fdis = fs.open(path);

 

Text line = new Text();

LineReader reader = new LineReader(fdis); //一行一行的读 使用LineReader

while(reader.readLine(line) > 0) {

         System.out.println(line);//输出

fdis.close();

 

使用bufferedReader读取

 String uri = "hdfs://localhost:9000/hadoop/test/IP-COUNTRY-REGION-CITY.CSV.hive"; 

Configuration conf = new Configuration(); 
FileSystem fs = null; 
FSDataInputStream in = null; 
BufferedReader d = null; 

try { 
    fs = FileSystem.get(URI.create(uri), conf); 
    in = fs.open(new Path(uri)); 
    d = new BufferedReader(new InputStreamReader(in));   //使用BufferedReader 进行readLine
    String s = null; 
    int stat = 1; 
    while (true) { 
        System.out.println("line "+stat++); 
        s = d.readLine();

 

 

public class JavaFile01 {

//InputStream 三个基本的读方法        
//abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。        
//int read(byte[] b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。        
//int read(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。
//如果返回-1,表示读到了输入流的末尾。
//off指定在数组b中存放数据的起始偏移位置;
//len指定读取的最大字节数。

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

	File f = new File("a.txt");
	//InputStream是一个标准的输入接口
	//对应读取数据的类有:FileInputStream ObjectInputStream等
	
	//XXXInputStream就是为InputStream对象赋予额外的功能,
	InputStream in = new BufferedInputStream(new FileInputStream(f));
	byte[] b = new byte[1024];
	while(in.read()!=-1){
	    try {
		in.read(b);
		System.out.println("读入buffer的信息:"+new String(b));
	    } catch (IOException e) {
		e.printStackTrace();
	    }
	}
	
//	InputSteream和OutpurStream是针对基于字节(byte)输入输出设计的,实际应用中常常需要读
//	写的是基于字符(char ,Unicode 2 个字节)的,java.io.Reader和java.io.Writer就是所有读
//	写字符数据流的父类。
	
	//FileReader作为Reader对象的数据源
	BufferedReader brin = new BufferedReader(new FileReader("a.txt"));
	
	
	//Stream与Reader之间的转换
	InputStreamReader isr = new InputStreamReader(in);//<--Stream输入
	BufferedReader reader = new BufferedReader(isr);//使用Reader进行读取
	System.out.println(reader.readLine());
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值