`

Java 控制台相关

    博客分类:
  • Java
阅读更多
  1. 命令行参数

       在启动Java控制台应用程序,可以一次性地向程序中传递零至多个参数,这些参数被称为命令行参数(Command Line Arguments),这些参数将被系统接收并静态初始化为一个一维的String数组对象,然后将该数组对象作为实参传给应用程序入口main(),其语法格式为:

java <应用程序类名>[<命令行参数>]*

 简单的测试程序如下:

public class TestCommandLineArgs {
	public static void main(String args[]){
		for(int i =0; i< args.length; i++){
			System.out.println(args[i]);
		}
	}
}

 其中 args[0] 代表的是第一个参数,与C的命令行参数有所不同。

注意:

        1.命令行参数使用空格符分隔,如果参数本身包含空格符的话则必须使用双引号““ ”括起来,如果参数中包含双引  号字符的话,则需要使用两个连续的双引号进行转移。

         2.如果没有给出任何命令行参数,则系统也会创建一个长度为0的一维String数组对象,并将其传递给main()方法的参数,此时参数args的值不是null,而是相当于:”args = new String[0];"

        2. 系统 属性

  • Java系统属性是以“键-值”对的形式存在--由属性名称,属性值两部分组成,均为字符串形式,记录了当前操作系统和JVM等相关的环境信息。
  • 可以使用System.getProperties()方法获得Properties类的对象,其中包含了所有可用的系统属性信息。
  • 可使用System或Properties类的getProperty(String)方法获得特定系统属性的属性值。
  • 可使用System或Properties类的setProperty(String,String)方法添加新的系统属性信息。
  • 在命令行运行Java程序时,可以使用-D选项添加新的系统属性。
public class TestSystemProperty {
	public static void main(String args[]){
		Properties ps =  System.getProperties();
		ps.setProperty("crazy", "grass");
		Enumeration pn = ps.propertyNames();
		while(pn.hasMoreElements()){
			String pName =(String) pn.nextElement();
			String pValue = ps.getProperty(pName);
			System.out.println(pName + "-----" + pValue);
		}
	}
}

 3.标准输入/输出

    控制台输入/输出是应用程序最基本且常用的功能之一,java.lang.System类的三个静态类成员提供了有关的I/O操作功能:

    public static final PrintStream out

     标准输出工具,提供向“标准输出“写出数据的功能。System.out对象为     java.io.PrintStream类型,在Java虚拟机启动时,已被初始化并关联到运行Java程序的终端窗口。

    public static final InputStream in

       标准输入工具,提供从“标准输入”读入数据的功能。System.in对象为java.io.InputStream类型,已被初始话关联到用户键盘。

 

public static final PrintStrem err (很少使用)

简单的使用:

public class TestStandardInput {
	public static void main(String args[]){
		String s;
		InputStreamReader  isr = new InputStreamReader(System.in);
		BufferedReader reader = new BufferedReader(isr);
		try {
			s = reader.readLine();
		while(!s.equals("")){
			System.out.println(s);
			s = reader.readLine();
		}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
} 

   4.文件操作

    File类型对象的内容是不可变的;也就是说,File对象已经创建其所封装的路径/文件名信息将不可改变直至销毁。

File类中定义了多个方法,介绍下常用的:

  •  构造方法

      public File(String pathname)

      通过给定的路径/文件名字符串创建一个新File实例。

         public    File(String parent, String child)

       通过分别给定的parent路径和child文件名(也可能是自路径名)或字符串来创建一个新的File实例。

  • 获取常规信息操作

      public String getName()

       返回此File对象所表示的文件名或目录名(最后一级子目录名)。

      public String getPath()

       返回此File对象所对应的路径。

      public  String getAbsolutePath()

       返回此File对象所对应的绝对路径名。

      public String getParent()

       返回此File对象对应目录(最后一级子目录)的父目录路径名。

      public long length()

       返回当前File对象所表示的文件的长度,单位为字节。如果当前对象对应的是一个目录而不是一个文件,则返回值是不确定的。

      public String[] list()

       返回当前File对象所表示的目录中包含的所有文件及子目录的名称所组成的字符串数组。

      public File[] listFiles()

       返回当前File对象所表示的目录中包含的所有文件和子目录对应的File对象。

  • 测试操作

        public boolean exists()

          测试当前File对象所表示的文件或目录是否存在。

        public boolean canRead()

          测试应用程序是否可以读取当前File对象所表示的文件。

        public  boolean  canWrite()

          测试应用程序是否可以修改当前File对象所表示的文件。

           public boolean isFile()

          测试当前File对象所表示的是否是一个标准文件

         public boolean isHidden()

          测试当前File对象所表示的是否是一个隐藏文件

         public boolean isDirectory()

           测试当前File对象所表示的是否是一个目录(目录也当作文件处理)

            public boolean isAbsolute()

            测试当前File对象所表示的是否为绝对路径名。

  • 设置和修改操作

       public boolean delete()

        删除此File对象所对应的文件或目录。如对应的是目录,则该目录必须为空才能删除。只有当文件或目录删除成功时返回true,否则返回false。

        public void deleteOnExit()

         在Java虚拟机关闭时,删除当前File对象所对应的文件或目录。

        public boolean createNewFile() throws IOException

         检查当前File对象对应的文件是否存在,如不存在则创建该文件。如果指定的文件不存在并成功地创建则返回true,否则返回false。

        public boolean setReadOnly()

           设置当前File对象所表示的文件或目录为只读的,此操作成功返回true

        public boolean renameTo(File dest)

           移动并重命名此File对象对应的文件。

         public boolean mkdir()

           创建当前File对象所表示的目录。

public class TestFile {
	public static void main(String args[]){
		File f1 = new File("a.jpg");
		File f2 = new File("D:\\Temp\\","c.jpg");
		File f3 = new File("D:\\Temp\\a.jpg");
		File f4 = new File("D:\\Temp\\");
		print("Name:" + f1.getName());
		print("Path:" + f1.getPath());
		print("AbsolutePath:" + f1.getAbsolutePath());
		print("parent: " + f1.getParent());
		print("lastModified:" + new Date(f1.lastModified()));
		print("length:" + f1.length() +"bytes");
		print("exists:" + f1.exists());
		print("canRead:" + f1.canRead());
		print("canWrite:" + f1.canWrite());
		f1.setReadOnly();
		
		print("after: canWrite?:" + f1.canWrite());
		print("isFile:" + f1.isFile());
		//delete a.jpg
//		f3.delete();
		try {
			print("createNewFile:" + new File("c.txt").createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}
		f1.renameTo(f2);
		for(File f: f4.listFiles()){
			print("Name:" + f.getName());
		}
	}
	public static void print(Object o){
		System.out.println(o);
	}
}
  •   文件过滤

     在文件操作过程中可能会涉及文件过滤,即只检索和处理符合特定条件的文件,其中最常见的情形是按照文件类型(后缀)进行划分,比如只查找.class or .xml文件等,这种情况下可以使用java.io.Filter接口,顾名思义,此接口起到了文件过滤器的功能。FileFilter接口中只定义了一个抽象的方法:

     boolean accept(File pathname)

      测试参数指定的File对象对应的文件(子目录)是否应保留在文件列表中,即不被过滤掉。

       我们知道,接口本身并不实现其所规划的功能,在实际应用中,可以定义一个该接口的实现类,重写其中的accept()方法,在方法体中加入所需要的文件过滤逻辑,然后创建一个该实现类的对象作为参数传递给File对象的文件列表方法list()就可以了,在list()方法执行的过程中会自动调用前者的accept()方法来过滤文件。看下例:

文件过滤器:

public class MyFilter implements FileFilter {
	private String extension;
	public MyFilter(String extension){
		this.extension = extension;
	}
	public boolean accept(File file) {
		if(file.isDirectory()){
			return false;
		}
		//get file name
		String fileName = file.getName();
		//get file extension
		int idx = fileName.lastIndexOf(".");
		if((-1 == idx) || ((fileName.length()-1) == idx)){
			return false;
		}else{
			return fileName.substring(idx, fileName.length()).equals(extension);
		}
	}
}

 测试过滤器

public class TestFileFilter {
	public static void main(String args[]){
		TestFileFilter  test = new TestFileFilter();
		test.dir("D:\\JAVA_CODE\\study\\src\\com\\test",".java");
	}
	
	public void dir(String path,String extension){
		File directory = new File(path);
		MyFilter filter = new MyFilter(extension);
		File files[] = directory.listFiles(filter);
		print("file path:" + path);
		print("file extension:" + extension);
		for(File file: files){
			print("\t fileName:  " + file.getName());
		}
	}
	
	private void print(Object o){
		System.out.println(o);
	}
}
 

 

 

  •    可变参数
public class TestVararges {
	public static void main(String args[]){
		varPrint("test",10,"aa","bb","cc");
	}
	public static void varPrint(String s, int i,Object... obj){
		for(Object o:obj){
			System.out.println(o);
		}
	}
}

    可变参数是通过一维数组进行封装的,因此也可以改写为for(int i=0; i < obj.length;i++)...

 

 

 

分享到:
评论

相关推荐

    java控制台接收源代码

    ### Java控制台接收源代码详解 #### 一、引言 在Java开发中,通过控制台接收用户输入是非常常见的操作之一。例如,在命令行界面环境下,我们常常需要从用户那里获取一些必要的信息来完成特定的功能或者计算。本文...

    java控制台应用小程序

    Java控制台应用小程序是Java编程领域中的基础知识,主要用于学习和实现简单的交互式程序。在没有图形用户界面(GUI)的情况下,这些小程序通过标准输入(键盘)接收用户输入,并通过标准输出(屏幕)显示结果。本篇...

    java控制台生成表格

    java控制台生成表格开发中有一个需求:某个业务查询出一个表格,然后返回给前端一个控制台样式的表格,以模拟控制台输出。但是没有使用过类似的工具类,google了很久也没有找到满意的答案,因为大部分都是简单的打印...

    java控制台小程序

    "java控制台小程序"这个项目显然旨在利用Java语言开发一款可以在命令行界面运行的游戏,让玩家通过打怪、提升等级和获取装备来体验游戏乐趣。通过这种方式,开发者可以锻炼到面向对象编程、数据结构、算法以及游戏...

    java控制台版笔记本

    Java控制台版笔记本是一种利用Java编程语言开发的简单文本处理工具,主要在命令行界面运行。这个项目可能是一个为了教学、学习或者轻量级笔记管理而设计的小型应用程序。通过控制台,用户可以进行基本的文字输入、...

    Java项目:控制台商城系统(java+打印控制台)

    在本项目中,我们关注的是一个基于Java编程语言构建的控制台商城系统。这个系统的主要目的是在命令行界面(控制台)中模拟一个简单的商城环境,实现基础的商业操作,如管理客户信息、商品信息以及购物信息。让我们...

    java控制台扫雷源码

    Java控制台扫雷游戏是一款基于文本界面的经典小游戏,它的实现主要涉及到Java编程语言的基本语法、控制结构、数组操作以及简单的算法应用。以下是关于这个项目的详细知识点解析: 1. **Java基础知识**: - **类与...

    java控制台的超市管理系统

    《Java控制台超市管理系统详解》 Java是一种广泛应用于软件开发的高级编程语言,以其“一次编写,到处运行”的特性受到全球程序员的青睐。本系统——"java控制台的超市管理系统",是用Java语言实现的一个基础应用,...

    java控制台小程序.rar

    Java控制台小程序是一种基于Java编程语言开发的命令行应用程序,它们不依赖于图形用户界面(GUI),而是通过标准输入(键盘)接收用户指令,并通过标准输出(显示器)展示结果。这些程序通常用于教学、测试或者在不...

    java控制台输出可执行sql,支持oracle,mysql,sqlserver,kingbas

    标题中的"java控制台输出可执行sql"指出这是一个Java库,它的主要功能是能够在控制台上显示应用程序执行的SQL语句。这通常对于调试和优化数据库交互的代码非常有用,因为可以直观地看到程序如何与数据库进行通信。这...

    JAVA 获得控制台的输出信息

    在Java编程语言中,捕获控制台的输出信息是一个常见的需求,尤其是在进行单元测试或调试时,需要收集程序运行过程中的标准输出以便于分析。在提供的代码片段中,展示了一种通过重定向`System.out`流来实现这一目标的...

    java控制台 银行管理系统

    《Java控制台银行管理系统》是面向初学者的一款教学项目,旨在帮助新手快速掌握Java编程基础,特别是控制台应用开发及属性文件的应用。该系统通过简单的命令行交互模拟银行的日常业务,如存款、取款、查询余额等,为...

    Java控制台项目V.编程资料

    ### Java控制台项目V.编程资料 - 银行管理系统 #### 项目概述 本项目旨在使用Java控制台开发一个简单的小型银行管理系统。该系统包括两个主要功能部分:管理员功能和顾客功能。通过Java控制台应用程序实现这些功能...

    java控制台图书售卖

    在本项目中,"java控制台图书售卖"是一个基于Java编程语言开发的简易图书售卖系统。这个系统通过控制台交互,模拟了管理员和用户(包括买方和卖方)的操作流程,提供了图书信息的查看、购买以及管理功能。以下是该...

    几个比较好的java控制台程序

    在给定的“几个比较好的java控制台程序”中,我们可以深入探讨几个使用Java编写的控制台应用程序,包括酒店管理系统、学生成绩管理和游戏开发。 1. **酒店管理系统**: 酒店管理系统通常涉及预订、入住、退房等...

    java控制台购物系统

    【Java控制台购物系统】是一个基于Java SE(标准版)开发的简单购物应用程序,它提供了一个基础的模拟购物环境,适合初学者理解面向对象编程、数据结构和算法在实际问题中的应用。在这个系统中,用户可以通过命令行...

    java 控制台 21点小游戏

    Java控制台21点小游戏是一款基于Java编程语言开发的简单桌面游戏,通常称为“Blackjack”。这款游戏在控制台环境中运行,玩家与计算机(庄家)进行对战,目标是尽可能接近21点,但不能超过,否则将爆牌并输掉游戏。 ...

    java控制台5子棋游戏

    仿五子棋java控制台5子棋游戏,java控制台5子棋游戏

    双色球java控制台.zip_java怎么在控制台输入

    本项目涉及的是一个双色球控制台程序,它允许用户在Java控制台进行输入,模拟双色球彩票的选号过程。下面将详细探讨相关知识点。 1. **Java控制台输入**: 在Java中,我们通常使用`System.in`对象来获取控制台输入。...

    银行管理系统Java控制台项目

    这是一个java控制台项目,代码量在1000左右,实现功能不多,大体分两类:管理员添加客户、计算储蓄金总额、客户资产排行;客户的存款、取款、转账、修改密码功能。最后这是个控制台项目没有华丽的界面,只涉及数据库...

Global site tag (gtag.js) - Google Analytics