【I/O】常见输入输出

缓冲输入文件、输出文件

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Test {
    public static void main(String[] args) throws IOException{
        BufferedReader input = new BufferedReader(new FileReader("D:/test.txt"));
        PrintWriter output=new PrintWriter(new BufferedWriter(new FileWriter("D:/test_copy.txt")));
        String s;
        while((s=input.readLine())!=null){
            output.print(s);   //readLine()取出文件的一行内容时,是将换行符是删除了的。
        }
        input.close();
        output.close();  //缓冲区可能仍有内容,不要忘记正确的关闭它。
    }
}

从内存中读入(将一个string通过StringReader读入)

import java.io.IOException;
import java.io.StringReader;

public class Test {
    public static void main(String[] args) throws IOException{
        StringReader input = new StringReader("这是一个字符串");
        int c;
        while((c=input.read())!=-1){
            System.out.println((char)c);  //read()返回的一个int形式,必须类型转换为char才能正确打印。
        }
        input.close();
    }
}

格式化的内存输入,此时需要用到面向字节的I/O类(InputStream)

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException{
        DataInputStream input = new DataInputStream(new ByteArrayInputStream("This".getBytes()));
        while(input.available()!=0){    //判断是否还有剩余的字节。(由于是一个个字节读取,故所有字节都是合法的结果,因此返回值不能用来检测输入是否结束,我们只能使用available判断是否读取完毕。
            System.out.println((char)input.readByte());  //readBytes一次次读入一个字节。还有类似的readChar/readFloat/readDouble/readInt等
        }
    }
}

使用DataInputStream来存储和恢复数据

DataInputStream/DataOutputStream可以确保我们读取数据一致(无论平台有多么不同)。这一点是非常重要的。缺点就是我们必须知道流中数据项所在的确切位置。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException{
        DataOutputStream output=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.txt")));
        output.writeDouble(3.1415926535);
        output.writeUTF("使用UTF编码");
        output.writeInt(123);
        output.close();

        DataInputStream input=new DataInputStream(new BufferedInputStream(new FileInputStream("test.txt")));
        System.out.println(input.readDouble());
        System.out.println(input.readUTF());
        System.out.println(input.readInt());
        input.close();
    }
}

读写随机访问文件

时间: 2024-12-22 13:56:13

【I/O】常见输入输出的相关文章

java学习笔记--1_常见输入输出语句熟悉篇章

今天上oj,想来是准备做做算法和数据结构的.看了看以前做的基础题目,想着就先熟悉一下java的语言吧! 以下是今天做的10道题目. 备注:oj有时候对格式要求非常严格,因为不在格式上纠结太久,只要eclipse编译出来正确的结果.我就直接跳过了! 一下是题目及代码: 1001 Hello World! 1 Hello World! 2 3 Time Limit: 200/100 MS (Java/Others) Memory Limit: 32768/5000 K (Java/Others) 4

计算机的输入和输出

1.冯诺依曼计算机的输入和输出 2.简单的输入 假设cpu和存储器已经开始工作了,其中一条指令就是读取8个手动开关状态. cpu将地址发送到地址总线,地址总线识别出这个地址是输入输出的地址,而不是存储器的地址. 同时控制总线上cpu发出读的信号告知输入输出设备这是一个读的操作,输入输出的控制逻辑和地址译码 就会从地址为1111的读出数据11100000,通过数据总线送回到cpu.cpu根据这个数据调整后面的执行或者运算. 3.简单的输出 cpu给出输出单元对应的地址1110,通过地址总线传送到输

T001 A+B(附常见标准输入输出)

国际惯例OJ第一道都是A+B吧..据说为了适应各种OJ的编译器..整理了一下一些常见的标准输入输出 1 #include<stdio.h>//一组数据滚粗 2 3 int main() 4 { 5 int A, B; 6 scanf("%d%d", &A, &B); 7 printf("%d\n", A+B); 8 return 0; 9 } 10 11 #include<stdio.h>//多组数据不结束 12 13 int

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&

asp.net MVC 常见安全问题及解决方案

asp.net MVC 常见安全问题及解决方案 一.CSRF (Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用) 详细说明: http://imroot.diandian.com/post/2010-11-21/40031442584 Example :            在登陆状态下进入了攻击网站向安全站点发送了请求. Solut

常见java开发异常总结

内容为转载,未发现原创作者,如有侵权,敬请提醒 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化

python补充最常见的内置函数

最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2.6)                       # 四舍五入取整,也就是3.0 pow(2, 3)                        # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5 cmp(2.3, 3.2)                   # 比较两个数的大小

CentOS下输入输出重定向

nux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认输入是键盘,输出是显示器.你可以用重定向来改变这些设置.比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,用了重定向后可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了.输出也是一样,你可以把屏幕输出重定向到一个文件里,再到文件里去看结果.重定向操作符可以用来

Java 输入输出(一)——流

Java输入输出大致可以分为两类,流式操作与非流式操作,流式操作主要关注与文件内容的读写,非流式操作主要用于文件在磁盘上的管理.下面首先学习流式数据操作. 流 与c++类似,java中也提供了流的概念来处理输入输出(I/O).Java中,可以从其中读入一个字节序列的对象称为输入流,可以向其中写入一个字节序列的对象称为输出流.输入输出流都是对象,这一类对象需要绑定特定的字节来源和目的地,可以是标准输入输出(键盘和屏幕),文件或者网络,甚至可以是内存块. 抽象类InputStream和OutputS