举例:
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.BufferedReaderimport 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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)