java中如何实现文件的批量读取与写入

java中如何实现文件的批量读取与写入,第1张

你可以将所有图片的名字放在一个数组中,然后循环该数组,在循环中调用转换图片的方法:

String[] names={"1.jpg","2.jpg","3.jpg"}

for(String name:names)handle(name)

假如说你的文件名的命名有一定的规律,就像上面的数组一样,就可以直接循环,然后在循环体中自己生成文件名

for(int i=1i<=40i++){

    name=i+".jpg"

    handle(name)    

}

我马上写一个给你。

package com.zeal.card// 这里是我自己临时用的包名,你自己改一下就好了

import java.io.BufferedReader

import java.io.File

import java.io.FileInputStream

import java.io.InputStreamReader

public class Demo {

/**

* 主方法

* @param args

*/

public static void main(String[] args) {

printData()

}

/**

* 读取TXT文档第一行数据中的第3位到第9位,并输出到控制台

*/

public static void printData() {

// 定义文本文件数组,这里是临时演示用,请自己改写

String[] txtFiles = {

"c:/a.txt",

"c:/b.txt",

"c:/c.txt",

}

// 遍历文件

for (int i=0i<txtFiles.lengthi++) {

try {

// 得到文件

File file = new File(txtFiles[i])

// 如果文件存在

if (file.exists()) {

// 建立缓冲包装器

BufferedReader in = null

in = new BufferedReader(new InputStreamReader(new FileInputStream(file)))

// 读出一行(因为只是读一行,没必要遍历全部文件内容)

String temp = in.readLine()

// 如果不为空,并且长度至少为9

if (temp != null) {

if (temp.length() >=9) {

String txt = temp.substring(2, 9)

System.out.println("取出数据:" + txt)

}

}

}

} catch (Exception e) {

e.printStackTrace()

}

}

}

}

PS:代码是死的,人是活的,上面代码只是纯粹为了实现你说的功能做的一个演示,写的不好,应该将变量写在循环之外的,我没考虑那么多,反正只是读取一行。如果你需要多次用到这个功能,建议你将其封装为一个方法,给一个文件名或者File类型的文件作为参数,返回值就是你要读取的第3到9位,这样可以重复使用。

写好的,你自己看着作一点修改就行

import java.io.*

import java.sql.*

public class RenameFile

{

File parentFile

public RenameFile(File parentFile)

{

this.parentFile = parentFile

readDataBase(parentFile.list())

}

private void readDataBase(String[] list)//这个函数里读数据库的方式可能跟你的不一样,自己看着改改

{

for(String oldName:list)

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

Connection conn = DriverManager.getConnection("jdbc:odbc:DSN","","")//DSN是数据源名字

Statement st = conn.createStatement()

ResultSet rs = st.executeQuery("Select * from TABLENAME where FILENAME = "+oldName)//TABLENAME是数据库里表的名字,FILENAME是表示文件名的字段的名字

while (rs.next())

{

String newName = rs.getString("NUMBER")//NUMBER是表示学号的字段,getString要根据你定义的数据类型作改动为getInt或其他

rename(oldName,newName)

}

}

catch (Exception e)

{

e.printStackTrace()

}

}

}

private void rename(String oldName, String newName)

{

try

{

File source = new File(parentFile.toString()+"\\"+oldName)

File target = new File(source.getParent()+"\\"+newName)

boolean res = source.renameTo(target)

}

catch (Exception e)

{

e.printStackTrace()

}

}

public static void main(String [] args)

{

String path = "path"//这里把path改成文件夹的路径

File file = new File(path)

new RenameFile(file)

}

}

_______________________________

for(String oldName:list)

这个是java 5.0以后才出现的新语法,也是一种循环,这个循环的次数是list的元素个数,用oldName作为临时变量,指代list中的每一个元素。

当然你也可以这样写:

for(int i=0, i<list.length(), i++)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存