1,用select将sql中doc表的filepath字段取出。
2,用返回的数据 和本地磁盘下的文件进行匹配(D:\filedata\upload)"注:我这里面有12个文件夹,存着好多不同的图片" 返回数据库中不存在的数据的字段值:id,projectid,projectname。
7 个解决方案
#1
把本地磁盘的图片路径都获取出来,存入ListA,然后把数据库中已经存在的路径也取出来存入ListB,然后用ListA.removeAll(ListB);得到的就是数据库中不存在的了
#2
求代码老哥
#3
下面是获取路径下所有文件名的方法,至于获取数据库中的我就不写了,
/**
* 获取路径下所有文件的名字
*@see
* @param path
* @return List<String>
*/
private static List<String> getFiles(String path) {
List<String> files = new ArrayList<String>();
File file = new File(path);
getAllFiles(file, files);
return files;
}
private static void getAllFiles(File file, List<String> files) {
if (file.isFile()) {
files.add(file.getAbsolutePath());
} else {
File[] fs = file.listFiles();
for (File f : fs) {
getAllFiles(f, files);
}
}
}
#4
public class Test {
/**
* 获取路径下所有文件的名字
*@see
* @param path
* @return List<String>
*/
private static List getFiles(String path) {
List files = new ArrayList();
File file = new File(path);
getAllFiles(file, files);
return files;
}
private static void getAllFiles(File file, List files) {
if (file.isFile()) {
files.add(file.getAbsolutePath());
} else {
File[] fs = file.listFiles();
for (int i = 0; i < fs.length; i++) {
File f = fs[i];
getAllFiles(f, files);
}
}
}
public static void main(String[] args) {
List pngs = getFiles("D:\\workspace\\test");
List paths = getPath4JDBC();
pngs.removeAll(paths);
for(int i = 0; i < pngs.size(); i++){
System.out.println((String)pngs.get(i));
}
}
public static List getPath4JDBC(){
List jdbcPaths = new ArrayList();
Connection conn = null;
Statement st = null;
ResultSet result = null;
try {
Class.forName("");//加载对应数据库的驱动
conn = DriverManager.getConnection("url", "user", "password");//根据对应数据库的url,user,password获取数据库连接
st = conn.createStatement();
result = st.executeQuery("select path from table");//写入你自己的sql
while(result.next()){
jdbcPaths.add(result.getString("path"));//我这里暂且用path来获取
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return jdbcPaths;
}
}
#5
public class DocFileReader{
public static void main(String [] args){
String root = DocFileReader.class.getResource("/").getPath();
root = root.substring(0, root.length() - 1);
XMLConfigManager.initConfigManager(root, new String[] {
"/breadthframework.xml"});
String sql = "select filepath from doc";
DataBaseProvide dbp = DataBaseProvide.getNewInstance();
DataTable dt= dbp.executeQuery(sql, null);
System.out.println(dt);
}
}
这个是我读取数据库的代码
#6
public class test {
private List<String> fileNames ;
public void setFileName(String path){
File file = new File(path);
String [] fileNames = file.list() ;
for (int i = 0; i < fileNames.length; i++) {
this.fileNames.add(fileNames[i]) ;
}
}
public List<String> getFileNames(){
List<String> list = new ArrayList<String>() ;//这个为你数据库查出来的
fileNames = new ArrayList<String>() ;
setFileName("D:/filedata/upload") ;
boolean b = false ;
for (int i = 0; i < fileNames.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(fileNames.get(i).equals(list.get(j))){
b = true ;
}
}
if(b){
fileNames.remove(i) ;
i = i -1 ;
}
}
return fileNames ;
}
}
#7
DataBaseProvide dbp = DataBaseProvide.getNewInstance();
DataTable dt= dbp.executeQuery(sql, null);
这个应该是自己封装的查询方法来,不知道其内部的数据结构,所以真的无能为力。
你看看DataTable是如何取值的吧,把查询出来的路径都存储到list里面就行了
DataTable dt= dbp.executeQuery(sql, null);
这个应该是自己封装的查询方法来,不知道其内部的数据结构,所以真的无能为力。
你看看DataTable是如何取值的吧,把查询出来的路径都存储到list里面就行了
#1
把本地磁盘的图片路径都获取出来,存入ListA,然后把数据库中已经存在的路径也取出来存入ListB,然后用ListA.removeAll(ListB);得到的就是数据库中不存在的了
#2
求代码老哥
#3
下面是获取路径下所有文件名的方法,至于获取数据库中的我就不写了,
/**
* 获取路径下所有文件的名字
*@see
* @param path
* @return List<String>
*/
private static List<String> getFiles(String path) {
List<String> files = new ArrayList<String>();
File file = new File(path);
getAllFiles(file, files);
return files;
}
private static void getAllFiles(File file, List<String> files) {
if (file.isFile()) {
files.add(file.getAbsolutePath());
} else {
File[] fs = file.listFiles();
for (File f : fs) {
getAllFiles(f, files);
}
}
}
#4
public class Test {
/**
* 获取路径下所有文件的名字
*@see
* @param path
* @return List<String>
*/
private static List getFiles(String path) {
List files = new ArrayList();
File file = new File(path);
getAllFiles(file, files);
return files;
}
private static void getAllFiles(File file, List files) {
if (file.isFile()) {
files.add(file.getAbsolutePath());
} else {
File[] fs = file.listFiles();
for (int i = 0; i < fs.length; i++) {
File f = fs[i];
getAllFiles(f, files);
}
}
}
public static void main(String[] args) {
List pngs = getFiles("D:\\workspace\\test");
List paths = getPath4JDBC();
pngs.removeAll(paths);
for(int i = 0; i < pngs.size(); i++){
System.out.println((String)pngs.get(i));
}
}
public static List getPath4JDBC(){
List jdbcPaths = new ArrayList();
Connection conn = null;
Statement st = null;
ResultSet result = null;
try {
Class.forName("");//加载对应数据库的驱动
conn = DriverManager.getConnection("url", "user", "password");//根据对应数据库的url,user,password获取数据库连接
st = conn.createStatement();
result = st.executeQuery("select path from table");//写入你自己的sql
while(result.next()){
jdbcPaths.add(result.getString("path"));//我这里暂且用path来获取
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return jdbcPaths;
}
}
#5
public class DocFileReader{
public static void main(String [] args){
String root = DocFileReader.class.getResource("/").getPath();
root = root.substring(0, root.length() - 1);
XMLConfigManager.initConfigManager(root, new String[] {
"/breadthframework.xml"});
String sql = "select filepath from doc";
DataBaseProvide dbp = DataBaseProvide.getNewInstance();
DataTable dt= dbp.executeQuery(sql, null);
System.out.println(dt);
}
}
这个是我读取数据库的代码
#6
public class test {
private List<String> fileNames ;
public void setFileName(String path){
File file = new File(path);
String [] fileNames = file.list() ;
for (int i = 0; i < fileNames.length; i++) {
this.fileNames.add(fileNames[i]) ;
}
}
public List<String> getFileNames(){
List<String> list = new ArrayList<String>() ;//这个为你数据库查出来的
fileNames = new ArrayList<String>() ;
setFileName("D:/filedata/upload") ;
boolean b = false ;
for (int i = 0; i < fileNames.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if(fileNames.get(i).equals(list.get(j))){
b = true ;
}
}
if(b){
fileNames.remove(i) ;
i = i -1 ;
}
}
return fileNames ;
}
}
#7
DataBaseProvide dbp = DataBaseProvide.getNewInstance();
DataTable dt= dbp.executeQuery(sql, null);
这个应该是自己封装的查询方法来,不知道其内部的数据结构,所以真的无能为力。
你看看DataTable是如何取值的吧,把查询出来的路径都存储到list里面就行了
DataTable dt= dbp.executeQuery(sql, null);
这个应该是自己封装的查询方法来,不知道其内部的数据结构,所以真的无能为力。
你看看DataTable是如何取值的吧,把查询出来的路径都存储到list里面就行了