java IO操作方法

File

Reader,Writer

三种读,三种写,读的是字符

FileReader,FileWriter

继承自Reader,Writer,有5个函数
write
write
write
String,toCharArray
write(String s)
write(String s,int off,int len)

java.util.Properties

Map,HashMap,TreeMap,HashTable

windows下可以通过type命令查看文本文档中的内容

type这个命令的java实现

public static void main(String[] args)
    try{
    //如果打开的参数包括空格怎么办?可以加""扩起来
    //如果本身文件包含双引号怎么办?使用转义符号\"
    //如果想打开.class怎么样?不算文本文档,打开会乱码!
    //如果换一个路径找不到这个class了怎么办?使用classpath
    //java -classpath d:\software Type d:\software\type.java

    FileReader fr=new FileReader(args[0]);
    int c=0;
    while(true){
    c=fr.read();
    if(c==-1){
    break;
    }
    //保留最低位2个字节,多余的切掉,因为文件读取是unicode格式
    System.out.print((char)c);
    }
    fr.close();
    //谁打开的文件谁负责关闭
    }
    catch(IOException e){
        e.printStackTrace();
        }

java虚拟机命令示例

D:\>java -classpath d:\softeware -Xms1024m -Xmx2000m -Xss256 Type           d:\software\type.java

这些命令要写在class之前!
栈空间设置-Xss256
堆初始大小-Xms1024m
堆最大大小-Xmx2000m


序列化操作

Student s1=new Student();
//省略Student类的实现和对象的初始化,演示序列化操作
FileOutputStream fos=
ObjectOutputStream oos=ObjectOutputStream(fos);
oos.writeObject(s1);
//强行把缓冲的数据传输到文本中
oos.flush();
oos.close();
fos.close();

中文默认操作系统GBK编码,若有一个a.txt,输出是中国梦
D:\software>java -Dfile.encoding=SHIFT_JIS Type a.txt
就会乱码,为什么?
FileReader会使用该平台下默认的编码方式去编码,发现是GBK就知道一个字符占用两个字节,就读两个,假如读进来”中“,java提供了unicode和GBK码表的一一映射,而到其他的平台就不一样了

我们读文本文件最好使用InputStreamReader

FileInputStream=new FileInputStream(args[0]);
//将字节流按照指定的编码方式整合成unicode字符流
InputStreamReader isr=new InputStreamReader(fis,"GBK");

如果见到乱码:
1.文件是否是文本文件?不是免谈
2.是文本文件,那就是编码有错误


//提供缓存和行数据的输出功能
BufferedReader br=new BufferedReader(isr);
//String s=br.readLine();
String s=null;
while((s=br.readLine())!=null)

输出

int i=567;
FileWriter fw=new FileWriter("a.txt");
//换行和回车是两个操作,而且只是windows平台下是这个符号,所以PrintWrite
fw.write(""+567+"\r\n");
//上面这个很麻烦,最好使用用下面这个处理流
PrintWriter out=new PrintWriter(fw);

//从一开始就实现从字符到字节的转换
PrintStream

out.println(i);
//写数据最好用DataOutputStream,虽然你存入a.txt,但是其实存的是四个字节四个字节的反码数据,记事本打开是乱码的,但读回去很容易,可以读int直接回去,而PrintWriter读回去还要转成数字,而且要实现加好分隔符才行
FileOutputStream fos=
DataOutputStream dos=
dos.writeInt(567);

Map map=New TreeMap();
map.put("002",new Student());
map.put("001",new Integer());
//覆盖了原来的002
map.put("002",new String("Hello"));
String s=(String) map.get("001");

Properties p=new Properties();
p.put(new Integer(0),”“);
这个是错误的!因为Properties不是键值对,是名值对,只能存字符串!
而且也取消的put函数,而是setProperty

Properties p=new Properties();
p.setProperty("server","192.168.0.1");
//一个参数,则根据名取值,没有返回null
String v1=p.getProperty("server2");
//两个参数,则根据名取值,没有返回第二个参数
String v1=p.getProperty("server2","Hello");

新建配置文件,名称config.properties
中间都是server=192.168.0.1这样的名值对
以后只能更改值,名绝对不能修改!

Properties p=new Properties();
p.load(new FileInputStream("config.properties"));
String server=p.getProperty("server");
//更改一个值并写回文档?
p.setProperty("server","123.12.0.2");
p.store(new FileOutputStream("config.properties"));

我们可以获取当前目录,windows下是 user.dir,得到绝对路径

System.getProperties().list(new PrintStream(new              FileOutputStream("a.txt")));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的IO(输入和输出)是指用于读取和写入数据的API(应用程序编程接口)。在Java中,通过IO类来实现输入和输出操作。 输出操作通常用于将数据从程序发送到外部设备(如屏幕、文件或网络),可以使用Java中的多个类来实现。 其中最常用的是OutputStream类和Writer类。OutputStream类是所有输出流类的父类,提供了基本的输出操作方法,如write()和flush()。可以使用它的子类FileOutputStream、ByteArrayOutputStream等来将数据写入到文件或内存中。 Writer类是所有字符输出流类的父类,与OutputStream类类似,提供了基本的输出操作方法,如write()和flush()。可以使用它的子类FileWriter、BufferedWriter等来将字符数据写入到文件或缓冲区中。 下面是一个示例代码,演示使用Java IO进行输出操作: ```java import java.io.*; public class OutputDemo { public static void main(String[] args) { try { // 创建文件输出流 FileOutputStream outputStream = new FileOutputStream("output.txt"); // 写入数据 String data = "Hello, Java IO!"; byte[] byteArray = data.getBytes(); outputStream.write(byteArray); // 关闭流 outputStream.close(); System.out.println("数据写入成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码创建了一个文件输出流对象,将字符串数据"Hello, Java IO!"写入到名为output.txt的文件中。最后通过close()方法关闭流。在运行代码后,可以在当前目录下找到output.txt文件,并查看写入的数据。 通过以上代码示例,可以简单了解Java IO的输出操作,具体使用还可以根据需求选择合适的输出流类和方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值