使用FileOutputStream写入文件

举报
SHQ5785 发表于 2022/09/15 08:35:34 2022/09/15
【摘要】 一、写文件操作在Java中,文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。请参阅下面的完整的例子。public class WriteFileExample {public static void main(String[] args) { FileOutputStream fop = null;File file;String...

一、写文件操作

在Java中,文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。请参阅下面的完整的例子。

public class WriteFileExample {
public static void main(String[] args) {
 
FileOutputStream fop = null;
File file;
String content = "This is the text content";
 
try {
 
	file = new File("c:/newfile.txt");
	fop = new FileOutputStream(file);
 
	// if file doesnt exists, then create it
	if (!file.exists()) {
		file.createNewFile();
	}
 
	// get the content in bytes
	byte[] contentInBytes = content.getBytes();
 
	fop.write(contentInBytes);
	fop.flush();
	fop.close();
 
	System.out.println("Done");
 
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
  	try {
 	   if (fop != null) {
 	     fop.close();
 	   }
  	} catch (IOException e) {
  	  e.printStackTrace();
 	 }
	}
}
}

      更新的JDK7例如,使用新的“尝试资源关闭”的方法来轻松处理文件。

public class WriteFileExample {
public static void main(String[] args) {
 
  File file = new File("c:/newfile.txt");
  String content = "This is the text content";

  try (FileOutputStream fop = new FileOutputStream(file)) {

    // if file doesn't exists, then create it
    if (!file.exists()) {
    	file.createNewFile();
    }

    // get the content in bytes
    byte[] contentInBytes = content.getBytes();

    fop.write(contentInBytes);
    fop.flush();
    fop.close();

    System.out.println("Done");

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

​二、字符串如何判空?

      在一次编码过程中,有一个现象一直困扰着自己,经过后台的不断调试,才发现原来有时候字符串的空非空。测试代码如下:

 // medname可为药品名称或药品ID
String medname  =  request.getString("medname").trim();
logger.info("medname.length():" + medname.length());
logger.info("mednameisNULL:" + (medname == null));

      当自己在前台什么都不输入的时候,输出结果如下:

      这样自己就感到费解了,命名自己什么都没有输入啊,并且经过trim()trim():去掉字符串首尾的空格。方法的操作,按理说应该为空才对。

      然后自己想,是不是因为没输入其实代表的是输入的空字符串,而空字符串不同于null。于是自己就写了如下测试语句:

logger.info("mednam:" + (medname == ""));

      测试结果如下: 

      果然印证了自己的想法。其果然是一个空字符串!

      以后得注意一下这个问题了,否则会很容易留下BUG的。

三、利用正则表达式批处理含链接内容文档

    由于项目需求,自己需要将带有链接的标签去除,例如

<a href="/zhaoyao/17-66.html">头晕</a>,转换后的文档为头晕。

    由于说明书数量太大(100,569)自己需要采用批处理的方式进行操作。以后用户访问的就是批处理后的文档。故采用正则表达式的形式进行文档处理。

要读取文档内10w多条的数据,可按照3步走战略:

  1. 外层循环利用文件过滤器读取文件夹内所有符合条件的文件。

  2. 读取每一个筛选到的文件,利用正则表达式去除超链接符号。

  3. 将每一个处理过的文件重写回源文件。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。