读文件:

package main

import (

"fmt"

"io/ioutil"

)

func main() {

b, err := ioutil.ReadFile("test.log")

if err != nil {

fmt.Print(err)

}

fmt.Println(b)

str := string(b)

fmt.Println(str)

}

写文件:

package main

import (

"io/ioutil"

)

func check(e error) {

if e != nil {

panic(e)

}

}

func main() {

d1 := []byte("hello\ngo\n")

err := ioutil.WriteFile("test.txt", d1,0644)

check(err)

}

使用os进行读写文件

首先要注意的就是两个打开文件的方法:

func Open

func Open(name string) (*File, error)

Open opens the named file for reading. If successful, methods on the returned file can be used for reading; the associated file descriptor has mode O_RDONLY. If there is an error, it will be of type *PathError.

读文件:

fi, err := os.Open(path)

if err != nil {

panic(err)

}

defer fi.Close()

func OpenFile

需要提供文件路径、打开模式、文件权限

func OpenFile(name string, flag int, perm FileMode) (*File, error)

OpenFile is the generalized open call; most users will use Open or Create instead. It opens the named file with specified flag (O_RDONLY etc.) and perm, (0666 etc.) if applicable. If successful, methods on the returned File can be used for I/O. If there is an error, it will be of type *PathError.

读文件:

package main

import (

"log"

"os"

)

func main() {

f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE,0755)

if err != nil {

log.Fatal(err)

}

if err := f.Close(); err != nil {

log.Fatal(err)

}

}

读方法

package main

import (

"bufio"

"fmt"

"io"

"io/ioutil"

"os"

)

func check(e error) {

if e != nil {

panic(e)

}

}

func main() {

f, err := os.Open("/tmp/dat")

check(err)

b1 := make([]byte,5)

n1, err := f.Read(b1)

check(err)

fmt.Printf("%d bytes: %s\n", n1, string(b1))

o2, err := f.Seek(6,0)

check(err)

b2 := make([]byte,2)

n2, err := f.Read(b2)

check(err)

fmt.Printf("%d bytes @ %d: %s\n", n2, o2, string(b2))

o3, err := f.Seek(6,0)

check(err)

b3 := make([]byte,2)

n3, err := io.ReadAtLeast(f, b3,2)

check(err)

fmt.Printf("%d bytes @ %d: %s\n", n3, o3, string(b3))

_, err = f.Seek(0,0)

check(err)

r4 := bufio.NewReader(f)

b4, err := r4.Peek(5)

check(err)

fmt.Printf("5 bytes: %s\n", string(b4))

f.Close()

}

写方法

package main

import (

"bufio"

"fmt"

"io/ioutil"

"os"

)

func check(e error) {

if e != nil {

panic(e)

}

}

func main() {

f, err := os.Create("/tmp/dat2")

check(err)

defer f.Close()

d2 := []byte{115,111,109,101,10}

n2, err := f.Write(d2)

check(err)

fmt.Printf("wrote %d bytes\n", n2)

n3, err := f.WriteString("writes\n")

fmt.Printf("wrote %d bytes\n", n3)

f.Sync()

w := bufio.NewWriter(f)

n4, err := w.WriteString("buffered\n")

fmt.Printf("wrote %d bytes\n", n4)

w.Flush()

}

几种读取文件方法速度比较

package main

import (

"bufio"

"fmt"

"io"

"io/ioutil"

"os"

"time"

)

func read0(path string) string {

f, err := ioutil.ReadFile(path)

if err != nil {

fmt.Printf("%s\n", err)

panic(err)

}

return string(f)

}

func read1(path string) string {

fi, err := os.Open(path)

if err != nil {

panic(err)

}

defer fi.Close()

chunks := make([]byte,1024,1024)

buf := make([]byte,1024)

for {

n, err := fi.Read(buf)

if err != nil && err != io.EOF {

panic(err)

}

if0 == n {

break

}

chunks = append(chunks, buf[:n]...)

}

return string(chunks)

}

func read2(path string) string {

fi, err := os.Open(path)

if err != nil {

panic(err)

}

defer fi.Close()

r := bufio.NewReader(fi)

chunks := make([]byte,1024,1024)

buf := make([]byte,1024)

for {

n, err := r.Read(buf)

if err != nil && err != io.EOF {

panic(err)

}

if0 == n {

break

}

chunks = append(chunks, buf[:n]...)

}

return string(chunks)

}

func read3(path string) string {

fi, err := os.Open(path)

if err != nil {

panic(err)

}

defer fi.Close()

fd, err := ioutil.ReadAll(fi)

return string(fd)

}

func main() {

file := "test.log"

start := time.Now()

read0(file)

t0 := time.Now()

fmt.Printf("Cost time %v\n", t0.Sub(start))

read1(file)

t1 := time.Now()

fmt.Printf("Cost time %v\n", t1.Sub(t0))

read2(file)

t2 := time.Now()

fmt.Printf("Cost time %v\n", t2.Sub(t1))

read3(file)

t3 := time.Now()

fmt.Printf("Cost time %v\n", t3.Sub(t2))

}

运行结果:

Cost time 4.0105ms

Cost time 11.5043ms

Cost time 7.0042ms

Cost time 2.4983ms

Cost time 4.4925ms

Cost time 11.0053ms

Cost time 5.0082ms

Cost time 2.9992ms

Cost time 3.9866ms

Cost time 15.0085ms

Cost time 7.5054ms

Cost time 2.5035ms

Cost time 4.9989ms

Cost time 14.0112ms

Cost time 7.5045ms

Cost time 3.508ms

Cost time 3.0043ms

Cost time 15.0265ms

Cost time 8.9884ms

Cost time 2.0036ms

java中IOUtil.readLong_使用io/ioutil进行读写文件相关推荐

  1. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  2. JAVA中解决Filter过滤掉css,js,图片文件等问题

    JAVA中解决Filter过滤掉css,js,图片文件等问题 参考文章: (1)JAVA中解决Filter过滤掉css,js,图片文件等问题 (2)https://www.cnblogs.com/er ...

  3. java中的三种IO(BIO、NIO、AIO)

    IO 阻塞和非阻塞主要指的是访问 IO 的线程是否会阻塞(或者说是等待) 线程访问资源,该资源是否准备就绪的一种处理方式 BIO(传统的IO) BIO是同步阻塞式的IO,以流的方式处理数据(效率低) ...

  4. Java中的流与IO

    J3 - 白起 技术(I/O流) 最近在看 Netty 相关的内容,以后就会写一些和 Netty 相关技术的文章. 而 Netty 作为业界最流行的 NIO 框架之一,在开始之前就自然要全面的介绍一下 ...

  5. java.io几种读写文件的方式

    一.Java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作 ...

  6. java如何实现tcp传输图像_如何在java中实现TCP服务器和TCP客户端传输文件

    我实现了简单的TCP服务器和TCP客户端类,可以从客户端发送消息到服务器,消息将在服务器端转换为大写,但是如何实现从服务器到客户端的传输文件,并从客户端上传文件到服务器.以下代码是我所得到的. TCP ...

  7. java io importnews_java(JSP)读写文件操作

    [有些时候,会报错,错误提示为: Can not find the tag library descriptor for http://java.sun.com/jsp/jstl/core 解决此问题 ...

  8. java 流压缩_java之IO流:压缩文件

    在java的学习中,IO流是一个避不开的话题.在java日常的学习和使用中,为了给不同的场景提供不同的用途,IO流拥有一个庞大的方法集合.虽然给使用者提供了极大的便利,但此同时也带来了学习时的异常冗杂 ...

  9. Python中的文件IO操作(读写文件、追加文件)

    [注]:下述操作过程是结合多种网络方法,然后自己实践的结果.写在这里,主要目的是加深记忆,也希望能帮助后来者 Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关 ...

最新文章

  1. HDOJ_ACM_数塔
  2. JS中怎样将时间字符串转换成Date并比较大小
  3. swift 函数.和匿名函数
  4. 深度报文检测 linux,DPI-深度报文检测
  5. 关于RTP时间戳及多媒体通信同步的问题/H264关于RTP协议的实现
  6. a标签里面设置onclick_实现a标签中的各种点击(onclick)事件的方法
  7. winpcap基本原理及常见应用_碳十四测年的基本原理和常见应用谬误
  8. matlab charl,基于MATLAB/Simulink的双闭环SPWM变频调速系统仿真.pdf
  9. Dubbo学习总结(5)——Dubbo服务架构及服务治理过程演进
  10. GitHub又出新功能了,网友:这也太爽了吧。。。
  11. 滚轮事件的防冒泡、阻止默认行为
  12. 4.css命名书写规范
  13. tomcat热部署(springboot项目)
  14. 利用java程序实现文件加密
  15. 光学字符识别引擎 tesseract-ocr 简介
  16. 计算机科学见刊之后多久检索,论文见刊后多久可以检索
  17. 如何稳步实现互联网流量变现?
  18. 浙大PTA数据结构与算法题目集(中文)题解集复习用
  19. 股价从8美元到50美元,微博做对了什么
  20. Python通过socket执行WOL实现局域网内网络唤醒

热门文章

  1. jpush推送格式 swift_Swift中配置极光推送
  2. eclipse maven项目 class类部署不到tomcat下_Spring Boot的两种部署方式:jar包和war包
  3. 小学计算机教案设计ppt,小学信息技术《PowerPoint制做教案》ppt教案.ppt
  4. c语言指着与数组,C语言指针与数组
  5. 项目管理excel_项目经理必备的6款项目管理软件
  6. 嵌入式工程师最后都选择了什么职位?
  7. FPGA学习之路—接口(3)—SPI详解及Verilog源码分析
  8. 列表_月隐学python第6课
  9. python3安装_Python 3.8.2安装教程
  10. linux oracle脚本编写,Linux 脚本编写基础(一)--语法