黑马程序员---Java学习笔记之io2

1、键盘输入一行,之后在控制台输出,知道遇到“over”

import java.io.IOException;
import java.io.InputStream;

public class SystemInDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws IOException {
		// TODO Auto-generated method stub
		
		InputStream in = System.in;
		
		StringBuilder sb = new StringBuilder();
		
		String end = sb.toString();
		
		int temp;
		
		while(!"over".equals(end))
		{
			if( (temp = in.read())!='\r')
			{
				sb.append((char)temp);
			}
			else
			{
				in.read();
				end = sb.toString();
				
				System.out.println(end);
				
				sb.delete(0,sb.length());
			}
		}

	}

}

2、使用字符转换流类进行读取一行字符串,然后遇到“over”之后,停止输入。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class InputStreamReaderDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		
		InputStream in = System.in;
		
		InputStreamReader is = new InputStreamReader(in);
		
		BufferedReader br = new BufferedReader(is);
		
		String line = null;
		
		while( (line = br.readLine()) != null )
		{
			if("over".equals(line) )
				break;
			
			System.out.println(line);
			
		}
		
		

	}

}

3、键盘输入最常见的写法:

BuffredReader br = new BuffredReader(new InputStreamReader(System.in));

4、什么时候会使用转换流?当涉及到字符与字节之间的转换时,或者是涉及到文件编码问题时(因为转换流中含有相应制定编码表的构造函数)。

5、将一个文件输出到控制台上

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class PrintDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		BufferedReader br = new BufferedReader(new FileReader("F:\\practice\\src\\com\\day20\\PrintDemo.java"));
		
		BufferedWriter bos = new BufferedWriter(new OutputStreamWriter(System.out));
		
		
		String line = null;
		while( (line = br.readLine()) != null )
		{
			bos.write(line);
			bos.flush();
			bos.newLine();
		}
		
		br.close();
		bos.close();
	}

}

6、System.in和System.out分别是标准输入路和标准输出流,但是他们可以被System类中的setIn()方法和setOut()方法重定向。

7、Java异常日志和系统日志的创建。

8、File对象,弥补流的不足。流只能操作数据,而不能获取封装了数据的文件的属性信息。

9、File类中的createNewFile()方法只有在指定路径下没有该文件时才会去创建文件,有就不创建。这点跟输出流很不一样。

10、只有一个文件对象,没有具体的文件时,依旧可以通过File类的getPath和getAbsolutePath获取相对路径或绝对路径。

11、输出某个目录下,以某个词为后缀的的所有文件

File f = new File("F:\\");
		
		String[] names = f.list(new FilenameFilter(){
				public boolean accept(File dir,String name)
				{
					return name.endsWith(".txt");
				}
				
		}
				);
		for( String name : names )
		{
			System.out.println(name);
		}

12、File类中的list()方法。是返回一个字符数组,该数组中包括当前File对象所指的目录下的所有文件名及文件夹名(包括隐藏的)。如果当前对象所指的并非目录,而是文件,则该方法返回值为null。

 13、某函数在自己函数体中再次调用自己,称为递归。使用递归的时候应注意递归层数和递归条件。

14.递归的应用,打印层次性的目录结构:

import java.io.File;

public class FileTraverseDemo {

	public static void main(String[] args) {
		
		File file = new File("F:\\javaworkplace");
		int level = 0;
		fileTraverse(file,0);

	}
	public static void fileTraverse(File dir,int level)
	{
		File[] files = dir.listFiles();
		System.out.println(printBlank(level)+dir.getName());
		level++;
		
		for( File file : files )
		{
			if( file.isDirectory() )
			{
				fileTraverse(file,level);
			}
			else
			{
				System.out.println(printBlank(level)+file.getName());
			}
		}
	}
	private static String printBlank(int level)
	{
		StringBuilder sb = new StringBuilder();
		for( int i = 0; i < level; i++ )
			sb.append("  ");
		sb.append("|---");
		return sb.toString();
	}

}
15、删除一个带文件的目录

import java.io.File;

public class FileDeleteDemo {

	public static void main(String[] args) {
		
		File file = new File("F:\\软件编程\\其他");
		fileDelete(file);

	}
	public static void fileDelete(File dir)
	{
		File[] files = dir.listFiles();
		for( File file : files )
		{
			if( file.isDirectory() )
				fileDelete(file);
			else
				System.out.println(file.toString()+file.delete());
		}
		System.out.println(dir.toString()+dir.delete());
	}

}
16、创建一个文件列表

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class JavaListText {
	
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File file = new File("F:\\javaworkplace");
		BufferedWriter br = new BufferedWriter(new FileWriter("F:\\javaListText.txt"));
		
		List<String> list = new ArrayList<String>();
		
		javaListText(file,list);
		
		for( String str : list )
		{
			br.write(str);
			br.newLine();
			br.flush();
		}
		br.close();

	}
	public static void javaListText(File dir,List<String> list) throws IOException
	{
		
		File[] files = dir.listFiles();
		
		for(File file : files)
		{
			if( file.isDirectory() )
				javaListText(file,list);
			else
			{
				if(file.getName().endsWith(".java"))
				{
					String temp = file.getAbsolutePath();
					list.add(temp);
				}
			}
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值