文本I/O与二进制I/O  

  在计算机中所有的文件都是以二进制的形式来存储的,所以本质上所有的文件都是二进制文件。
  文本I/O建立在二进制I/O的基础之上,它能提供字符层次的编码和解码的抽象,在写入一个字符时,Java虚拟机会将统一码转化为文件指定的编码,读文件同理。而二进制I/O不需要转化。如果使用二进制I/O向文件写入一个数值,就是将内存中的确切值复制到文件中。
  由于二进制I/O不需要编码和解码,所以,二进制I/O比文本I/O效率高。
  二进制文件与主机的编码方案无关,因此,它是可移植的。在任何机器上的Java程序可以读取Java程序所创建的二进制文件。

Java 文本I/O

  java.io.File file = new java.io.File("hello.java");
    文件和目录路径名的抽象表示形式。
    File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
      ->为在当前目录下的文件hello.txt创建一个File对象
      ->也可以是明确的绝对路径,如"/Users/zhengbinMac/Workspaces/hello.java"
      ->在Windows中目录的分隔符是反斜杠(\),但是在Java中,反斜杠是一个特殊字符,所以应该写为\\。

  java.io.PrintWriter = new java.io.PrintWriter("File file");
    使用指定文件创建不具有自动行刷新的新 PrintWriter。
    可用于创建一个文件并向文本文件写入数据。
    会报出FileNotFoundException异常。

  java.util.Scanner s = new java.util.Scanner(File);
    创建一个所产生的值都是从特定文件扫描而来的扫描器
  java.util.Scanner s = new java.util.Scanner(String);
    创建一个所产生的值都是从特定字符串扫描而来的扫描器

 public class ReplaceDate{
public static void main(String args[]) {
try{
java.io.File f1 = new java.io.File("/Users/zhengbinMac/Workspaces/Revise Java/Files and I:O/123.txt");
System.out.println(f1.exists());
java.util.Scanner input = new java.util.Scanner(f1);
java.io.File f2 = new java.io.File("/Users/zhengbinMac/Workspaces/Revise Java/Files and I:O/321.txt");
System.out.println(f2.getAbsolutePath());
java.io.PrintWriter output = new java.io.PrintWriter(f2);
String s1 = new String();
if(input.hasNext()){
s1 = input.nextLine();
String s2 = s1.replaceAll("Hello","OK1");
output.println(s2);
}
input.close();
output.close();
}catch(java.io.FileNotFoundException e){
e.getStackTrace();
}
}
}

ReplaceDate.java

Java 二进制I/O

  字节流
    Java字节流是用来处理8比特字节的输入和输出。
    java.io.FileInputStream(File/String)
    java.io.FileOutputStream(File/String)

 public class CopyFile {
public static void main(String[] args) throws java.io.IOException {
java.io.FileInputStream in = null;
java.io.FileOutputStream out = null;
try{
in = new java.io.FileInputStream("input.txt");
out = new java.io.FileOutputStream("output.txt");
int c;
while((c = in.read()) != -1){
out.write(c);
}
}catch(java.io.IOException e){
e.getMessage();
}finally{
if(in != null){
in.close();
}
if(out != null){
out.close();
}
}
}

CopyFile.java

  

  字符流
    Java字节流是用来处理8比特字节的输入和输出,而字符流用于处理16位,即FileReader与FileWriter一次读写两个字节。

  文件输入流
    InputStream f = new FileInputStream("/Users/zhengbinMac/Workspaces");
      或
    File f = new File("/Users/zhengbinMac/Workspaces");
    InputStream f = new FileInputStream(f);

  文件输出流
    OutputStream f = new FileOutputStream("/Users/zhengbinMac/Workspaces");
      或
    File f = new File("/Users/zhengbinMac/Workspaces");
    OutputStream f = new FileOutputStream(f);

 import java.io.*;
public class fileStreamTest{
public static void main(String args[]){
try{
byte bWrite [] = {11,21,3,40,5};
OutputStream os = new FileOutputStream("test.txt");
for(int x=0; x < bWrite.length ; x++){
os.write( bWrite[x] ); // writes the bytes
}
os.close(); InputStream is = new FileInputStream("test.txt");
int size = is.available(); for(int i=0; i< size; i++){
System.out.print((char)is.read() + " ");
}
is.close();
}catch(IOException e){
System.out.print("Exception");
}
}
}

fileStreamTest.java

扩展:

  1.续写文件,不覆盖原有内容

   public static void fileLogger(String out) throws FileNotFoundException {
File file = new File(path);
if(file.exists()){
file.mkdirs();
}
PrintStream p = new PrintStream(new BufferedOutputStream(new FileOutputStream(file, true)));
p.println(out);
p.close();
}

Java基础——I/O的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. C++代码反汇编后的堆栈寄存器EBP和ESP

    最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...

  2. UNDERSTANDING CALLBACK FUNCTIONS IN JAVASCRIPT

    转自: http://recurial.com/programming/understanding-callback-functions-in-javascript/ Callback functio ...

  3. [转载]Spring Annotation Based Configuration

    Annotation injection is performed before XML injection, thus the latter configuration will override ...

  4. Android ListView点击失效

    item中存在 ImageButton 等可以点击的组件,这会抢先获得ListView的焦点. 从而导致item点击失效

  5. .NET framework 4.0安装失败怎么办

    开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ   开始——运行——输入%windir%找到有个叫SoftwareDistribution的文件夹,把它重命 ...

  6. [topcoder] EllysNumberGuessing

    http://community.topcoder.com/stat?c=problem_statement&pm=12975 简单题 #include <cstdlib> #in ...

  7. [Unity菜鸟] Final IK

    由于本人英文较烂,边翻译用户手册边学习. 用户手册  IK Components Final IK 包含许多强大高速的IK组件 Aim  AimIK solver是一个对CCD算法(cyclic co ...

  8. Tomcat 管理页面

    一.配置刚下载的解压版的apache-tomcat,启动后,通过浏览器访问:http://127.0.0.1:8080/(或者http://localhost:8080)然后点击下图的Server s ...

  9. mongodb管理工具rockmongo

    mongodb的图像管理工具非常之多,我用的是rockmongo. RockMongo 是一个PHP5写的MongoDB管理工具. 主要特征: 使用宽松的New BSD License协议 速度快,安 ...

  10. java教材

    教材blog    !!http://www.w3cschool.cc/java/java-tutorial.html    ok http://www.douban.com/group/topic/ ...