java io流对文件的增删改查

java io流对文件的增删改查,第1张

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到的内容,之后通过if判断来实现在某些特定位置的查找、增加、删除、修改 *** 作。

举例:

BufferedReader bre = null

OutputStreamWriter pw = null//定义一个流

try {

String file = "D:/test/test.txt"

bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是整个文件的缓存流

pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK")//确认流的输出文件和编码格式,此过程创建了“test.txt”实例

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

if(str.indexOf("排除")<0){//判断是否需要舍弃

pw.write(str)//将要写入文件的内容,可以多次write

}

}

bre.close()//关闭流

pw.close()//关闭流

解释:以上方法是实现的删除,if中的条件改变下,即可实现其余的功能。

备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

一、首先处理好数据库连接字串

Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0Data Source='c:\test.xls'Extended Properties=\"Excel 8.0HDR=YesIMEX=1\""

Excel2007: string connStr = "Microsoft.Ace.OleDb.12.0Data Source='c:\test.xlsx'Extended Properties=\"Excel 12.0HDR=YesIMEX=1\""

其中:

HDR ( Header Row )设置:

若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称

若指定值为 No,代表 Excel 档中的工作表第一行就是资料了,没有栏位名称

IMEX ( IMport EXport mode )设置

当 IMEX=0 时为"汇出模式",这个模式开启的 Excel 档案只能用来做"写入"用途

当 IMEX=1 时为"汇入模式",这个模式开启的 Excel 档案只能用来做"读取"用途。

当 IMEX=2 时为"连结模式",这个模式开启的 Excel 档案可同时支援"读取"与"写入"用途。

二、进行表格数据的查询、插入和更新:

(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)

1、查询

String sql = "select id, name from [tree$]"

String sql = "select id, name from `tree$`

2、插入

String sql = "insert into [tree$] (id,name) values(1,'testname')

3、更新

String sql = "update [tree$] set name='name2' where id=1

4、数据的删除

在OleDB的连接方式下,不可以使用delete from 语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。

代码如下:

import java.io.BufferedReader

import java.io.BufferedWriter

import java.io.FileInputStream

import java.io.FileOutputStream

import java.io.IOException

import java.io.InputStreamReader

import java.io.OutputStreamWriter

import java.util.ArrayList

import java.util.List

public class App61 {

public static void main(String[] args) throws IOException {

// 查找行输出

String line = findFileLine("mylist.txt", "abc")

System.out.println(line)

// 删除指定行

removeFileLine("mylist.txt", 2)

}

static void removeFileLine(String file, int line) throws IOException {

List<String> lines = readFileLines(file)

lines.remove(line - 1)

FileOutputStream outputStream = null

OutputStreamWriter streamWriter = null

BufferedWriter writer = null

try {

outputStream = new FileOutputStream(file)

streamWriter = new OutputStreamWriter(outputStream)

writer = new BufferedWriter(streamWriter)

for (String str : lines) {

writer.write(str + System.lineSeparator())

}

} finally {

if (writer != null) {

writer.close()

}

if (streamWriter != null) {

streamWriter.close()

}

if (outputStream != null) {

outputStream.close()

}

}

}

// 查找行

static String findFileLine(String file, String keywork) throws IOException {

List<String> lines = readFileLines(file)

for(String line : lines) {

if (line.contains(keywork)) {

return line

}

}

return ""

}

// 返回文件所有行

static List<String> readFileLines(String file) throws IOException {

List<String> lines = new ArrayList<>()

FileInputStream inputStream = null

InputStreamReader streamReader = null

BufferedReader reader = null

try {

inputStream = new FileInputStream(file)

streamReader = new InputStreamReader(inputStream)

reader = new BufferedReader(streamReader)

String line = ""

while ((line = reader.readLine()) != null) {

lines.add(line)

}

} finally {

if (reader != null) {

reader.close()

}

if (streamReader != null) {

streamReader.close()

}

if (inputStream != null) {

inputStream.close()

}

}

return lines

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11486363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存