文本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. uva 757

    贪心  优先队列 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> ...

  2. ***常见复杂SQL语句(含统计类SQL)

    1.SQL统计某字段的出现次数 比如统计某个表中,姓名出现的次数:select name,count(*) from biao group by name having count(*) > 2 ...

  3. MySQL.. ERROR! The server quit without updating PID file问题解决

    不小心将服务器OS给重启了,再启动数据库的时候,出现了很奇怪的问题 [root@dev run]# service mysql restart ERROR! MySQL server PID file ...

  4. 纯互联网项目“失宠”乐博资本杨宁称今后只投O2O

    从去年开始,我们接下来会进入全新的时代,就是智能一切的时代!过去的互联网都在电脑里,都在服务器里,包括现在移动云也是,大数据都是在服务器里面,真正我们身边的东西,智能含量是非常低的.包括你家洗衣机.冰 ...

  5. *[codility]MissingInteger

    今天开始刷刷codility上respectable的题目,难度适中. https://codility.com/demo/take-sample-test/missing_integer 本题是找出 ...

  6. kmalloc/kfree,vmalloc/vfree函数用法和区别

    http://blog.csdn.net/tigerjibo/article/details/6412881 kmalloc/kfree,vmalloc/vfree函数用法和区别 1.kmalloc ...

  7. HackDemo.java

    import java.io.*; import java.awt.*; public class HackDemo{ public static void main(String args[]) t ...

  8. C# 任意类型数据转JSON格式(转)

    HOT SUMMER 每天都是不一样,积极的去感受生活 C# 任意类型数据转JSON格式 /// <summary> /// List转成json /// </summary> ...

  9. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  10. 254. Factor Combinations

    题目: Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a ...