JAVA SE (6)

–>JAVA SE (5)

Scanner类

通过Scanner类获取用户的输入

//创建Scanner对象
Scanner sc = new Scanner(System.in);
方法描述
hasNext()是否还有输入
next()读取下一个有效字符(此时才会结束输入,并且输入有效字符之前遇到的空格键、tab键、enter键,next()会自动忽视,输入有效字符后,next()才会将后续输入的空格键、tab键、enter键视为分隔符或结束符,因此用next()方法不能得到带空格的字符串)
hasNextLine()是否还有输入
nextLine()返回enter键之前的所有字符
hasNextInt()nextInt()
hasNextFloat()nextFloat()
hasNextDouble()nextDouble()
package com.bj.beans;

import java.util.Scanner;

public class Test{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str;
		System.out.println("请按next输入:");
		if(sc.hasNext()) {
			str = sc.next();
			//sc.nextLine();注意若无此句,
			System.out.println("next形式:" + str);
		}
		System.out.println("请按nextln输入:");
		if(sc.hasNextLine()) {
			str = sc.nextLine();
			System.out.println("nextLine形式: " + str);
		}	
	}	
}

结果

请按next输入:
qwer
next形式:qwer
请按nextln输入:
nextLine形式: 

发现nextLine形式并没有输出,这是为什么呢?
当你输入qwer并且按enter键后,next()方法只把qwer读进去了,并没有把enter键读进去;程序向下进行,输出qwer,然后sc里还有一个enter,sc.hasNextLine()判断为真,此时输出但是并没有什么东西,输出个空字符串。
在此基础上,再试一次:

请按next输入:
qwer       df
next形式:qwer
请按nextln输入:
nextLine形式:        df

此时应该看得很清楚了。


IO流

PrintStream类 :定义print()、println()方法。
System.outPrintStream类对象的一个引用。
PrintStream类(实现了write()方法)---------继承---->OutputStream类
IO流:字节流+字符流。
两个比较重要的流:FileInputStreamFileOutputStream,这两个是字节流

FileInputStream类
该类用来从文件读取数据
因此,该类的对象(即输入流对象)就是读取某个特定的文件,读取的数据放在某处。

  1. int read()-从输入流(要读取的内容)中读取数据的下一个字节java程序内部。返回读取字符的ascII值。到达流的末尾返回-1。
  2. int read(byte[] b)-从输入流(要读取的内容)中读取一定数量的字节,并将它们存储到缓冲区数组b中,返回实际读取的字节数(可能设置的缓冲区的大小没有全部用完)。

FileOutputStream类
该类用来创建一个文件向文件中写数据
因此,该类的对象(即输出流对象)就是用来创建某个特定的文件(和某个文件相关联,如"c:/java/hello"),并向这个特定的文件中写入数据(数据来自write()中传入的参数)。

  1. void write(int w)-把指定的字节写入到输出流中
  2. void write(byte[] w)-把指定数组中w.length长度字节写到OutputStream中。

InputStream类的**available()**方法–可以在读写操作前先得知数据流里有多少个字节可以读取。

package binaryheap.test;

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

public class BH{
	public static void main(String[] args) {
		try {
			//先写入数据,再在控制台输出
			File f = new File("a.txt");
			OutputStream os = new FileOutputStream(f);
			byte[] bt = {1,23,3,5};
			for (int i = 0; i < bt.length; i++) {
				os.write(bt[i]);
			}
			os.close();
			
			//inputStream
			InputStream is = new FileInputStream(f);
			int len = is.available();
			for (int i = 0; i < len; i++) {
				System.out.print(is.read() + "  ");
			}		
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}
}

结果

1  23  3  5  

但是在文件中显示是乱码。
解决方法:将字节流对象转换为字符流对象。

public class Test2{
	public static void main(String[] args){
		File f = new File("b.txt");
		FileOutputStream fos = new FileOutputStream(f);
		//利用字节流对象建立字符流对象
		//写出
		OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
		osw.append("为民楼喷空ing");
		osw.append("\r\n");
		osw.append("TxL");
		osw.close();
		fos.close();
		
		//读取
		FileInputStream fis = new FileInputStream(f);
		InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
		StringBuffer sb = new StringBuffer();
		while(isr.ready()){
			sb.append((char)isr.read());
		}
		System.out.println(sb.toString());
		isr.close();
		fis.close();
	}
}

结果

为民楼喷空ing
TxL

文件和IO

关于文件和IO的类:

  • File
  • FileReader
  • FileWriter

创建目录/文件夹
File对象方法:

  1. mkdir() -成功返回true
  2. mkdirs() -创建一个文件夹和他的所有父文件夹
package binaryheap.test;
import java.io.*;

public class BH{
	public static void main(String[] args){
		String dirName = "D:/a/b/c/d/e/f";
		File f = new File(dirName);
		f.mkdirs();
	}
}

目录
一个目录是一个(is a)File对象,包含文件其他文件夹
is.Directory()
-返回true。
list()
-提取包含的文件和文件夹的列表。

package binaryheap.test;
import java.io.*;
import java.nio.FloatBuffer;

public class BH{
	public static void main(String[] args){
		
		String str2 = "D:/a";
		File f = new File(str2);
		//查找是否是文件夹
		if(f.isDirectory()) {
			String[] s = f.list();
			for(String si : s) {
				String ss = str2 + "/" + si;
				File ff = new File(ss);
				if(ff.isDirectory()) {
					System.out.println(ss + "   is a 目录,即将删除");
					ff.delete();		//目录下没有其他文件和子目录时才会删除
				}else {
					System.out.println(ss + "    is a 文件");
				}
				
			}
			
		}else {
			System.out.println(str2 + "    is not a 目录");
		}
		
	}
}

结果

D:/a/ad.txt    is a 文件
D:/a/b   is a 目录
D:/a/cd   is a 目录
D:/a/dsf   is a 目录

–> JAVA SE (7)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值