请问一个String数组最多可以放入多少个元素?

doingwell 2007-11-26 03:31:38
现在我用一个String[]去获取一个文件夹下的所有jpg文件的文件名,但是每次最多只可以放入2672个文件,这是由于String[]本身限制的吗?
...全文
370 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
千山飞鸟绝 2011-11-30
  • 打赏
  • 举报
回复
java 中数组 需要指定元素开辟空间,元素个数是整型(不能Long),故最大元素为
Integer.MAX_VALUE = 2147483647
Liangent 2007-11-26
  • 打赏
  • 举报
回复
数组下标是int,最大长度应该不能超过Integer.MAX_VALUE
其实基本取决于内存限制...
piaopiao11 2007-11-26
  • 打赏
  • 举报
回复
汗。你在循环外面得到一个文件的数组。然后循环时判断那个数组的长度就可以了啊
File[] files=inputpath.listFiles();
for (int i=0;i<files.length;i++)
{
//.....
}
你这样写,每次都要执行inputpath.list()操作,相当于每次都读硬盘资源,很费时的。
doingwell 2007-11-26
  • 打赏
  • 举报
回复
还是有问题,最终在循环的时候还是要获取到究竟有多少个文件啊,所有inputpath.list().length()肯定是要被用到的啊,如果这个错了是不是就没有办法了?
廖骥荣 2007-11-26
  • 打赏
  • 举报
回复
同意上楼的观点:
* cocosunshine
发表于:2007-11-26 15:46:032楼 得分:0
我个人觉得应该不能超过Integer.MAX_VALUE。
doingwell 2007-11-26
  • 打赏
  • 举报
回复
多谢指点
seaforce 2007-11-26
  • 打赏
  • 举报
回复
先把目录下文件全取出来放到File[]数组中,再对这些文件进行操作
doingwell 2007-11-26
  • 打赏
  • 举报
回复
把inputpath.list()放到循环外面来做。
=============================
就是说在循环体外面先把inputpath.list()给了另外一个String()[]吗?
piaopiao11 2007-11-26
  • 打赏
  • 举报
回复
把inputpath.list()放到循环外面来做。
doingwell 2007-11-26
  • 打赏
  • 举报
回复
就是这段代码,在导入一个文件夹下面的JPG文件的时候总是导入到2672个文件后停止,而且没有任何报错

import java.io.*;
//import java.*;
//import java.lang.*;
import java.sql.SQLException;
public class PixInput {
/**
* @param string
* @throws ClassNotFoundException
* @throws SQLException
* @throws SQLException
*/

public static void main(String[] args) throws ClassNotFoundException, SQLException {
if (args.length==0){ //判读路径是否为空
System.out.println("Please input the path");//返回空值错误
}else{
System.out.println("开始导入路径:"+args[0]);//开始导入提示
java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//创建ODBC连接
java.sql.Connection con = null;//声明连接con
try {
con=java.sql.DriverManager.getConnection("jdbc:odbc:pixputin", "sa", "");//设置连接
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQLException error...");
e.printStackTrace();
}
java.sql.Statement stmt = null;
try {
stmt=con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("SQLException1 error...");
e.printStackTrace();
}
int result;
java.lang.String filename;
File inputpath=new File(args[0]);//路径文件赋值
File tempinput;//设置循环用文件
if (inputpath.exists()){
System.out.println("路径检查正确,开始导入...");

//String[] filelist1=inputpath.list();
for (int i=0;i<inputpath.list().length;i++)
{
filename=inputpath.list()[i];
tempinput=new File(filename);//循环文件赋值
if (tempinput.isDirectory()) {

} else{

if ( filename.endsWith("jpg")){
// filename.substring(filename.length()-4, 4)==".jpg") {

System.out.println("正在导入文件:"+inputpath.list()[i]);
result=stmt.executeUpdate("insert into cp(cpbh) values('"+filename.substring(0,filename.length()-4)+"')");
if (result==1) {System.out.println("导入成功!");}

}
}

}
}else{
System.out.println("路径:"+args[0]+"不存在,请检查");
}
stmt.close();
con.close();
}
}
}
doingwell 2007-11-26
  • 打赏
  • 举报
回复
我也希望是,等一下我把代码贴上来您帮忙看一下,谢谢先
xxxatt 2007-11-26
  • 打赏
  • 举报
回复
String[]本身并没有限制
seaforce 2007-11-26
  • 打赏
  • 举报
回复
/**
* project_name: Test
* package_name: CSDN_Test_20071126
* package_declaration: package CSDN_Test_20071126;
* filename: StringLengthTest.java
* author: yuhaiming
* date: 2007-11-26
*/
package CSDN_Test_20071126;

public class StringLengthTest {

/**
* @param args
*/
public static void main(String[] args) {
//Integer.MAX_VALUE=2147483646
//String[] str = new String[Integer.MAX_VALUE];这么定义肯定超出内存

String[] str = new String[2673];
str[2672]="test";
System.out.println(str[2672]);
}

}
piaopiao11 2007-11-26
  • 打赏
  • 举报
回复
应该不会的,我刚测了下10000个文件都不会有问题的。lz检查下代码看看是否有问题
Tian_930 2007-11-26
  • 打赏
  • 举报
回复
你是怎么定义STRING数组的 可能是不定义有问题(限制了它的长度)!
cocosunshine 2007-11-26
  • 打赏
  • 举报
回复
我个人觉得应该不能超过Integer.MAX_VALUE。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧