package io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
//System类对IO的支持
public class A
{
public static void main(String[] args) throws IOException
{
Demo2();
}
// 利用BufferedReader实现对键盘的读取
public static void Demo() throws IOException
{
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
String content = null;
boolean isContinue = true;
while (isContinue)
{
content = bufferedReader.readLine();
System.out.println(content);
if ("exit".equals(content))
{
isContinue = false;
}
}
bufferedReader.close();
}
// System类中的读取
public static void Demo2() throws IOException
{
// 别忘了InputStream是所有字节输入流的父类
InputStream in = System.in;
System.out.print("请输入文字: ");
byte[] buf = new byte[1024];
int len = 0;
try
{
// 将输入的数据保证到数组中,len记录输入的长度
len = in.read(buf);
}
catch (IOException e)
{
e.printStackTrace();
}
// 用字符串的方式打印数组中的数据
System.out.println("你的输入是: " + new String(buf, 0, len));
}
// System类中的写入
public static void Demo3() throws IOException
{ // 别忘了,OutputStream是所有字节写入流的父类
OutputStream out = System.out;
try
{
// 写入数据,只能是数组,所以用getBytes()方法
out.write("Hello,bitch!\r\n".getBytes());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
package io;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
//Scanner类相关操作
public class B
{
public static void main(String[] args)
{
}
// 从键盘读取
public static void test1()
{
Scanner input = new Scanner(System.in);
System.out.println("请输出一个整数:");
int i = input.nextInt();
System.out.println("你输入的整数是:" + i);
}
// 从字符串读取
public static void test2()
{
// 这里的\r\n是换行符,Linux下其实只用\n即可
Scanner input = new Scanner("hello\r\nworld\r\n");
// 循环读取,hasNext()方法和集合框架里面的一样使
while (input.hasNext())
{
// 每次读取一行,别的读取方法见API,比较简单
String s = input.nextLine();
System.out.println(s);
}
}
// 从文件读取
public static void test3()
{
String path = "c:/demo.txt";
File f = new File(path);
Scanner input = null;
try
{
// 从文件构造Scanner对象,有可能产生异常
input = new Scanner(f);
while (input.hasNext())
{
String s = input.nextLine();
System.out.println(s);
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
input.close();
}
}
}
package io;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
//PrintWriter类相关操作
public class C
{
public static void main(String[] args)
{
}
// 向文件写入内容
public static void test()
{
String path = "c:/demo.txt";
// 创建文件对象
File file = new File(path);
PrintWriter p = null;
try
{
// 此处构造函数还可以传其他对象,具体参考API文档
p = new PrintWriter(file);
// 向文件写入一行,此外还有print()和printf()方法
p.println("如果有一天我回到从前");
p.println("回到最原始的我");
p.println("你是否会觉得我不错");
// 刷新流
p.flush();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
finally
{
p.close();
}
}
// 实现PrintWriter的数据追加功能
public static void test1()
{
String path = File.separator + "home" + File.separator + "siu"
+ File.separator + "work" + File.separator + "demo.txt";
// 创建文件对象
File file = new File(path);
PrintWriter p = null;
try
{
// 利用FileWriter方式构建PrintWriter对象,实现追加
p = new PrintWriter(new FileWriter(file, true));
p.println("尼玛 这一句就是追加的 看到没");
p.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
// 我们来小心翼翼的关闭流,好吧^_^
p.close();
}
}
/*
* 与PrintWriter类似的还有一个PrintStream类,此处以PrintWriter举例是因为文本文件具有人为可读性
*
* 而二进制文件(字节模式)则需要使用专门的程序来读取
*
* 可能有人会问:FileOutputStream、 FileWriter都能写文件,那么为何还需要PrintWriter和PrintStream类
*
* 如果细看API文档,可以知道前者单纯的字符写入流和字节写入流操作的方式大多用数组进行
*
* 对文件的细化处理非常不方便,而PrintWriter和PrintStream则很好的解决了这一问题,提供print()等方法
*
* 并且,PrintWriter和PrintStream对于不存在文件对象的情况下会直接创建,如果已有文件对象
*
* 它们则会把原有文件给覆盖掉,却没有增加方法
*
* 解决这问题也很简单,再看API文档
*
* PrintWriter有一个构造方法PrintWriter(Writer out),也就是能够传入Writer对象
*
* PrintStream有一个构造方法PrintStream(OutputStream out),也就是能传入OutputStream对象
*
* 因此,我们这样写就可以了
*
* new PrintWriter(new FileWriter(file,true))
*
* new PrintStream(new FileOutputStream(file,true))
*
* 既能增加数据,也能更高效的处理文件,见如下代码示范
*/
}