JAVA练习9 输入输出

掌握:java的输入输出处理

1.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据通过System.out.print()显示在屏幕上。

import java.io.*;

public class Class1

{

public static void main(String args[]) {

byte  buffer[]=new byte[128];

int n;

try

{

n=System.in.read(buffer); //把键盘输入的数据读到数组buffer中,返回实际读取的字节数

for(int i=0;i<n;i++)

System.out.print((char)buffer[i]);

}

catch(IOException e)

{  System.out.print(e); }

}

}

2.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据保存为指定路径下的文件。

import java.io.*;

public class Class1

{

public static void main(String args[]) {

byte  buffer[]=new byte[128];

int n;

try

{

n=System.in.read(buffer);

          FileOutputStream out=new FileOutputStream("./abc.txt",true);//追加

          //FileOutputStream out=new FileOutputStream("./abc.txt",false);

   out.write(buffer,0,n);

          out.close( );

}

catch(IOException e)

{  System.out.print(e); }

}

}

3. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。

import java.io.*;

public class Class1

{

public static void main (String[] args) 

{

try

{

//FileInputStream fis=new FileInputStream("c:\\windows\\Config.txt");

            FileInputStream fis=new FileInputStream("Class1.java");

int  n;

while((n=fis.read())!=-1)

System.out.print((char)n);

fis.close();

}

catch(IOException e)

{

System.out.println(e.toString());

}

}

}

4. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)到字节数组中,并显示在屏幕上(或存储为其他文件)。

import java.io.*;//读取程序本身,显示在屏幕上

public class Class1

{

public static void main (String[] args)

{

try

{

FileInputStream fis=new FileInputStream("Class1.java");

byte[]  b=new byte[fis.available()];

System.out.println("文件流的大小:"+fis.available());

int n=fis.read(b);

myprint(b);

System.out.print("实际读取的字节数:"+n);

fis.close();

}

catch(IOException e)

{

System.out.println(e.toString());

}

}

static void myprint(byte[] x)

{

for(int i=0;i<x.length;i++)

System.out.print((char)x[i]);

}

}

5.编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件test1.txt,该文件内容有如下两行文本:

Java program is easy.

I like it.

从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始。将读取的数据在屏幕输出。

import java.io.*;

public class Class1

{

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

{

File file = new File("./test1.txt");

FileInputStream fis = new FileInputStream( file);

int n=0;

byte b[]=new byte[8];

n=fis.read(b,3,5);

fis.close();

for(int i=3;i<b.length;i++)//字节数组中从下标3开始的数据转化为字符后输出。

System.out.print((char)b[i]+"\t");

}

}

6.编写应用程序,程序中创建一个文件输出流对象out向当前目录下已有的文件abc.txt(内容为:"ABCDEFG")写入字符串"abcdefg"中的所有字符和大写字母'A'。

import java.io.*;

public class Class1

{

public static void main (String[] x) throws IOException

{

String s="abcdefg";

byte[] b;

FileOutputStream out=new FileOutputStream("./abc.txt",true);//添加字节数据

b=s.getBytes();

out.write(b,0,b.length);

out.write(65);//写入字节数据65---‘A’

out.close();

}

}

7.编写两个线程子类,分别用来创建管道输出流和管道输入流,其中管道输出流向管道发送5个0~20之间的随机整数;管道输入流接收管道中传过来的5个随机整数,并求他们的和。编写Java应用程序测试管道流的数据传送。

//TestPipedStream.java

import java.io.*;

public class TestPipedStream {

public static void main( String[] args ) {

try {//创建没有连接的管道输出流和管道输入流

PipedOutputStream out = new PipedOutputStream( );

PipedInputStream in = new PipedInputStream( );

out.connect( in );//连接两个管道流

ThreadOut to = new ThreadOut( out );

ThreadIn  ti = new ThreadIn( in );

to.start( );//启动线程

ti.start( );

}

catch( IOException e ) {

System.out.println( e );

}

}

}

/*向管道输出数据的线程子类:发送0~20之间的5个随机整数*/

class ThreadOut extends Thread {

private int[] data1=new int[5]; //管道输出流要发送的数据

private DataOutputStream dos;//声明数据输出流对象dos

public ThreadOut( PipedOutputStream out) {

//将数据输出流和管道输出流连接,以便向管道发送int类型的数据

dos = new DataOutputStream(out);

}

public void run( ) {//重写线程类的方法,线程启动后将执行该方法

try {//向管道中写入数据

for(int i=0;i<data1.length;i++) {

data1[i]=(int)(Math.random()*20);

System.out.println("第"+(i+1)+"次发送数据:"+data1[i]);

dos.writeInt(data1[i]);//向管道输出流写入数据

try {sleep(1000);} //线程休眠1000毫秒

catch(InterruptedException e) { }

}

dos.close( );//关闭流

}

catch( IOException e ) {

System.out.println( e );

}

}

}

/*从管道中读取数据的线程子类:接收管道中传过来的5个随机整数*/

class ThreadIn extends Thread {

private int sum=0; //5个随机整数

private DataInputStream dis;//声明数据输入流对象dis

public ThreadIn( PipedInputStream in ) {

//将数据输入流和管道输入流连接,以便从管道读取int类型的数据

dis = new DataInputStream( in );

}

public void run( ) {//重写线程类的方法,线程启动后将执行该方法

try {//接收输出管道发送的数据:

    int x;

for(int i=0;i<5;i++) {

x=dis.readInt();

sum+=x;

System.out.println("第"+(i+1)+"次接收数据:"

                   +x+"\t接收数据的和:"+sum);

try {sleep(1000);}

catch(InterruptedException e) { }

}

dis.close( );//关闭流

}

catch( IOException e ) {

System.out.println( e );

}

}

}

8.使用RandomAccessFile类及其方法。

import java.io.*;

public class Class1

{

public static void main( String[ ] args )

{

try

{

//以随机方式写入数据

RandomAccessFile out = new RandomAccessFile( "1.dat" , "rw" );

out.writeInt(12345);//4

out.writeChar('A');//2

out.writeBoolean(true);//1

out.writeUTF("程序设计");//8

    //显示字符‘A' 和”程序设计“

out.seek(4);

System.out.println(out.readChar());

out.skipBytes(1);//out.seek(7);

System.out.println(out.readUTF());

System.out.println(out.getFilePointer());

System.out.println(out.length());

out.close();

System.in.read();

}

catch( IOException e )

{

System.out.println( e );

System.exit( -2 );

}

}

}

9.编写应用程序,使用RandomAccessFile类及其方法,把程序本身分两次显示在屏幕上。第一次直接显示,第二次给每一行添加的行号显示。

import java.io.*;

public class Test

{

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

{

RandomAccessFile  randomfile = new RandomAccessFile("Test.java" , "r" );

String  s;

while((s=randomfile.readLine())!=null)

{ System.out.println(s); }

long filePointer=0,fileLength=randomfile.length();

randomfile.seek(0); //文件指针已到文件尾,将文件指针重设到文件开始位置

int i=1;

while(filePointer<fileLength)

{

s=randomfile.readLine();

System.out.println((i++)+"    "+s);

filePointer=randomfile.getFilePointer();

}

randomfile.close();

}

}

10.在程序所在的目录下有子目录b,目录b下有文本文件testb.txt。编写应用程序,创建文件对象:

File file=new File("b/testb.txt");

通过文件对象file得到它的文件名、相对路径、绝对路径、父目录名。

import java.io.*;

public class Class1

{

public static void main( String args[ ] )

{

File file=new File("b/testb.txt");

System.out.println("文件名:" + file.getName( ) );

System.out.println("相对路径:" + file.getPath( ) );

System.out.println("绝对路径:" + file.getAbsolutePath( ) );

System.out.println("父目录名:" + file.getParent( ) );

}

}

11.请编写一个名为Class1.java的Application,其功能为:测验文件Class1.java是否存在并输出其长度。

import java.io.*;

public class Class1

{

public static void main (String[] args)

{

File  f1=new  File("./Class1.java");

System.out.println("is exist:"+f1.exists( ));

System.out.println("file length:"+f1.length( ));

}

}

12.编写应用程序:创建目录c:\temp,并创建一个文件2.txt,向该文件中写入字符串"The first snow came."共5次。

import java.io.*;

public class Class1

{

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

{

File file1=new File("c:\\temp");

file1.mkdir();

File file2=new File(file1,"2.txt");

FileOutputStream out1=new FileOutputStream(file2);

String  s="The first snow came.";

byte[] b=s.getBytes();

for(int i=0;i<5;i++)

{

out1.write(b,0,b.length);

}

}

}

13.过滤文件并显示。

import java.io.*;

public class Class1

{

public static void main( String[ ] args )

{

try

{

File oDir = new File( "." );

String[ ] strList;

//如果没有命令行参数就取当前目录下的所有文件列表

if( 0 == args.length )

strList = oDir.list( );

else

strList = oDir.list( new DirFilter(args[0]));

for( int i = 0; i < strList.length; i ++ )

System.out.println( strList[ i ] );

}

catch( Exception e )

{

System.out.println( e );

}

}

}

class DirFilter implements FilenameFilter

{

String strPick;

DirFilter( String pickname )

{

this.strPick = pickname;

}

public boolean accept( File dir, String name )

{

return name.endsWith( strPick );

}

}

14.编写java应用程序,使用FileReader类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。

import java.io.*;//读取程序本身,显示在屏幕上

public class Class1

{

public static void main (String[] args)

{

try

{

FileReader fis=new FileReader("Class1.java");

//FileReader fis=new FileReader("c:\\windows\\Config.txt");

int  n;

while((n=fis.read())!=-1)

System.out.print((char)n);

fis.close();

}

catch(IOException e)

{

System.out.println(e.toString());

}

}

}

15.编写应用程序,创建BufferedReader的对象,从某个文本文件中的字符输入数据流中读取一行字符(该文件与程序在同一目录下),跳过10个字节后将其显示出来。

import java.io.*;

public class Class1

{

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

{

BufferedReader b_reader=new BufferedReader(new FileReader("1.js"));

         String str;

b_reader.skip(10);

str=b_reader.readLine();

System.out.println(str);

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值