Java输入输出处理技术2
7.从键盘输入
从键盘输入一行字符,并显示到屏幕上。
package io;
import java.io.*;
public class ReadAndWrite { public static void main(String[] args) {
InputStreamReader isr=new InputStreamReader(System.in);
OutputStreamWriter osr=new OutputStreamWriter(System.out);
int ch;
try {
System.out.print("请输入一行字符:");
while((ch=isr.read())!='\r')
osr.write(ch);
isr.close();
osr.close();
} catch (IOException e) {
System.out.println("输入流有误!");
} } }
8.文件复制
实现文件的复制。
package io;
import java.io.*;
public class ReadAndWriteFile { public static void main(String[] args) {
InputStreamReader isr;
OutputStreamWriter osw;
int ch;
if(args.length!=2){
System.out.println("参数格式不对,应该为:java CopyFile 源文件名 目标文件名");
return;
}
try {
isr=new InputStreamReader(new FileInputStream(args[0]));
osw=new OutputStreamWriter(new FileOutputStream(args[1]));
while((ch=isr.read())!=-1)
osw.write(ch);
isr.close();
osw.close();
System.out.println("文件复制成功");
} catch (FileNotFoundException e) {
System.out.println("文件没有找到!");
} catch (IOException e) {
System.out.println("文件读写错误!");
} } }
9.控制台输入类Scanner
Scanner使用示例
package io;
import java.util.*;
public class useScanner { public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name=in.nextLine();
System.out.println("请输入你的年龄:");
int age=in.nextInt();
System.out.println("请输入你的身高(单位:米):");
double height=in.nextDouble();
System.out.println("姓名:"+name+"年龄:"+age+"身高:"+height);
} }
10.File类读取文件列表
列出目录下的所有文件和子目录。
package io;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class dir { public static void main(String[] args) {
File fdir; //声明File对象
File[] AllFile; //声明一个File数组对象
String name; //定义一个String类型的name变量,存储文件名信息
String dirFlag; //标记是否为文件
long size; //存储文件长度信息
Date date; //存储文件属性中时间信息
if(args.length<1)
fdir = new File("."); //用户没有指定目录,则默认为当前目录
else
fdir = new File(args[0]);
AllFile=fdir.listFiles(); //获得文件和目录列表
//输出目录下所有的文件和目录
for(int i=0;i<AllFile.length;i++){
name = AllFile[i].getName(); //获得文件名
if(AllFile[i].isFile()){ //判断是否为文件
dirFlag=" ";
size=AllFile[i].length();
}else{
dirFlag=" <dir> ";
size = 0;
}
date = new Date(AllFile[i].lastModified()); //获取文件最后一次修改时间
//对输出的文件格式进行格式化处理,输出24小时格式的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//按照格式输出文件时间
System.out.print(sdf.format(date));
//输出目录标志
System.out.print(dirFlag);
if(size>0)
System.out.printf("%10d",size);
else
System.out.print(" ");
//输出文件名并换行
System.out.println(" "+name);
}
System.out.println("共有"+AllFile.length+"个文件和目录");
} }
11.RandomAccessFile类进行文件加密
文件加密/解密示例。
package io;
import java.io.*;
public class encrypt {
private File file; //存储文件对象信息
byte[] buf; //缓冲区,存储文件中的所有数据
RandomAccessFile fp;
//用参数filename指定的文件构造一个filed对象存储
//同时为缓冲区buf分配与文件长度相等的存储空间
public encrypt(String filename){
file=new File(filename);
buf=new byte[(int)file.length()];
} public encrypt(File destfile){
file = destfile;
buf = new byte[(int)file.length()];
} //按照读写的方式打开文件
public void openFile()throws FileNotFoundException{
fp=new RandomAccessFile(file,"rw");
} //关闭文件
public void closeFile()throws IOException{
fp.close();
} //对文件进行加密/解密
public void coding()throws IOException{
//将文件内容读到缓冲区中
fp.read(buf);
//将缓冲区中的内容取反
for(int i=0;i<buf.length;i++)
buf[i]=(byte)(~buf[i]);
//将文件指针定位到文件头部
fp.seek(0);
//将缓冲区中的内容写入到文件中
fp.write(buf);
} public static void main(String[] args) {
encrypt oa;
if(args.length<1){
System.out.println("你需要指定加密文件的名字!");
return;
}
try {
oa = new encrypt(args[0]);
oa.openFile();
oa.coding();
oa.closeFile();
System.out.println("文件加密成功!");
} catch (FileNotFoundException e) {
System.out.println("没有找到文件:"+args[0]);
}catch (IOException e){
System.out.println("文件读写错误:"+args[0]);
} } }
12.Java序列化技术
用序列化来存储对象。
先定义一个用来序列化的类:
package io.xuliehua;
import java.io.*;
public class Student implements Serializable{
private String name;
private String ID;
private int age;
private String specialty;
public Student(String name, String ID, int age, String specialty){
this.name=name;
this.ID=ID;
this.age=age;
this.specialty=specialty;
} public Student(){} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
} public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
} public String toString(){
return "姓名:"+name+" 学号:"+ID+" 年龄:"+age+" 专业:"+specialty;
}
}
package io.xuliehua;
import java.io.*;
public class ObjectFileTest { public static void main(String[] args) {
Student st = new Student("周勇","20140101",18,"计算机");
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("save.dat"));
out.writeObject(st);
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("save.dat"));
Student pupil = (Student)in.readObject();
in.close();
System.out.println(pupil);
System.out.println("姓名:"+pupil.getName());
System.out.println("学号:"+pupil.getID());
System.out.println("年龄:"+pupil.getAge());
System.out.println("专业:"+pupil.getSpecialty());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
程序运行结果如下:
姓名:周勇 学号:20140101 年龄:18 专业:计算机
姓名:周勇
学号:20140101
年龄:18
专业:计算机
Java输入输出处理技术2的更多相关文章
- Java输入输出处理技术1
		1.保存用户输入到文件 从键盘读入一行字符,写到文件output.txt中去. package io; import java.io.*; public class MyFileOutput { pu ... 
- java的poi技术读取Excel数据到MySQL
		这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ... 
- Java 加解密技术系列文章
		Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ... 
- java的JSP技术
		java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ... 
- java的poi技术写Excel的Sheet
		在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ... 
- Java Web编程技术学习要点及方向
		学习编程技术要点及方向亮点: 传统学习编程技术落后,应跟著潮流,要对业务聚焦处理.要Jar, 不要War:以小为主,以简为宝,集堆而成.去繁取简 Spring Boot,明日之春(future of ... 
- java的poi技术读,写Excel[2003-2007,2010]
		在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ... 
- java的poi技术读取Excel[2003-2007,2010]
		这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ... 
- java编解码技术,netty nio
		对于java提供的对象输入输出流ObjectInputStream与ObjectOutputStream,可以直接把java对象作为可存储 的字节数组写入文件,也可以传输到网络上去.对与java开放人 ... 
随机推荐
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)  B - Enlarging Enthusiasm dp好题
			B - Enlarging Enthusiasm 感觉做到过好多的dp题都会和单调性结合在一起. 思路:dp[ s ][ pre ][ res ] 表示的是已选择了s,上一个是pre, 还有res 的 ... 
- hdoj2546 饭卡(DP,01背包)
			题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路 首先要判断卡里的钱是不是大于等于5元,如果不足5元,直接输出余额:如果大于等于5元,则先留 ... 
- UIView中常见的方法汇总
			addSubview: 添加一个子视图到接收者并让它在最上面显示出来. - (void)addSubview:(UIView *)view 总结:这个方法同样设置了接收者为下一个视图响应对象.接收者 ... 
- 20169211《linux内核原理与分析》第七周作业
			1.教材内容学习总结 2.实验报告 3.学习总结 一.教材内容学习总结 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享 ... 
- 有了这套flex页面布局方案,页面什么的,那都不是事。
			一.CSS3弹性盒子弹性盒子是CSS3的一种新布局模式.CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局 ... 
- 深度学习---手写字体识别程序分析(python)
			我想大部分程序员的第一个程序应该都是“hello world”,在深度学习领域,这个“hello world”程序就是手写字体识别程序. 这次我们详细的分析下手写字体识别程序,从而可以对深度学习建立一 ... 
- jdk1.8下字符串常量的判断,String.intern()分析
			字符串常量池在jdk升级过程中发生了一些变化 在JDK1.6中,它在方法区中,属于“永久代”. 在JDK1.7中,它被移除方法区,放在java堆中. 在JDK1.8中,取消了“永久代”,将常量池放在元 ... 
- 美团外卖iOS多端复用的推动、支撑与思考
			背景 美团外卖2013年11月开始起步,随后高速发展,不断刷新多项行业记录.截止至2018年5月19日,日订单量峰值已超过2000万,是全球规模最大的外卖平台.业务的快速发展对技术支撑提出了更高的要求 ... 
- <泛> STL - stack 模拟实现
			今天,看C++Template的时候看到那人写了一个Stack,于是乎,手痒,自己也写了一个,在拜读了STD文件和C++模板元编程某些小节之后,你们就看到了这篇代码. 经过上述一番经历之后,我重新写了 ... 
- Eclipse插件安装出现Duplicate location错误
			一.原因 1.曾今安装过此插件 2.曾今安装此插件的时候出现错误 二.解决方法[eclipse] - Help - Install new software - Available Software ... 
