java txt文件读写 操作

  最近接到了文件上传和下载的小需求,故整理了下java文件操作的一些方法。

1、往指定路径的文件写入110万行字符串

  /**
     * 写入TXT文件
     */
    public static void writeFile() {
        try {
            File writeName = new File("E:\\home\\mobile.txt"); //文件路径
            writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖

            FileWriter writer = new FileWriter(writeName);
            BufferedWriter out = new BufferedWriter(writer);
            for (int i = 1; i <= 1100000; i++) {
                out.write("qwertyuioplmknjbhvgcfxdzsa\r\n"); // \r\n即为换行
                if (i % 10000 == 0) ;
                out.flush(); // 把缓存区内容压入文件
            }
            out.flush(); // 把缓存区内容压入文件

        } catch (IOException e) {
            e.printStackTrace();

        }
    }

2、上传和下载文件,一次性读取到内存和一次性写入

  public static void main(String[] args) throws IOException {
         //读文件到内存
        InputStream in = new FileInputStream("F:\\mobileSmall1.txt");
        byte[] buffer = new byte[in.available()];
        in.read(buffer); //一次性将文件二进制流读入

        //从内存到硬盘

        OutputStream out = new FileOutputStream("D:\\destination.txt");
        out.write(buffer);
        out.close();
        in.close();
    }

3、每次读取固定大小的文件到内存并写入文件

 

   public static void main(String[] args) throws IOException {
        //读文件到内存
        InputStream in = new FileInputStream("F:\\mobileSmall1.txt");
        byte[] buffer = new byte[1024 * 1024 * 10];//每次10M

        OutputStream out = new FileOutputStream("D:\\destination.txt");
        while (in.read(buffer) != -1) {
            out.write(buffer);
            out.flush();
        }
        //从内存到硬盘
        out.close();
        in.close();
    }

4、按行读取文件

 public static void upload() throws IOException {
        InputStream in = new FileInputStream("f:\\lys455558.txt");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
        String lines;
        long rows=0l; //统计文件行数
        OutputStream out = new FileOutputStream("D:\\destination.txt");
        while ((lines = bufferedReader.readLine()) != null) {
            rows++;
            if (lines.startsWith("")) {  //取出空行
                System.out.println(lines);
                out.write(lines.getBytes() );
                out.flush();
            }
        }
        System.out.println("文件行数:"+rows);
    }

6、统计文件行数

 public static void count() throws IOException {
        long rows=0;
        InputStream in = new FileInputStream("F:\\mobileSmall1.txt");
        if(in.available()>0){
            LineNumberReader lineNumberReader = new LineNumberReader(new InputStreamReader(in));
            lineNumberReader.skip(in.available());//跳到行末
            rows = lineNumberReader.getLineNumber() + 1; //取当前行号并加1
        }
        System.out.println("文件行数:"+rows);
    }

 

7、字符串转输入流(String   to  inputstream)

String Result="今天不下雨!";
InputStream  inputStream = new ByteArrayInputStream(Result.getBytes(Charset.forName("UTF-8")));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值