2011-03-27 178 views
1

我有一个类似problem.This是我的源的一个片段:字符串索引超出范围:-1

FileWriter fstream = new FileWriter("results_for_excel.txt"); 
BufferedWriter writer = new BufferedWriter(fstream); 
String sourceDirectory = "CVs"; 
File f = new File(sourceDirectory); 
String[] filenames = f.list(); 
Arrays.sort(filenames); 
String[] res = new String[filenames.length]; 
for (int i = 0; i < filenames.length; i++) { 
    System.out.println((i + 1) + " " + filenames[i]); 
} 


for (int i = 0; i < filenames.length; i++) { 
    int beg = filenames[i].indexOf("-"); 
    int end = filenames[i].indexOf("."); 
    res[i] = filenames[i].substring(beg,end); 
    System.out.println((i+1)+res[i]); 
    writer.write(res[i] + "\n"); 
} 
writer.flush(); 
writer.close(); 

我得到RE的例外[I] =文件名[I] .substring(BEG ,结束); 我无法弄清楚这是怎么回事on.Thanks提前:) PS我看了所有的重复,但什么都没有发生:(

回答

1

添加以下代码后

int beg = filenames[i].indexOf("-"); 
int end = filenames[i].indexOf("."); 

这将显示文件名是在错误的格式;

if (beg == -1 || end == -1) 
{ 
    System.out.println("Bad filename: " + filenames[i]); 
} 
1

要么

int beg = filenames[i].indexOf("-"); 
int end = filenames[i].indexOf("."); 

返回一个-1,它可能有它没有按文件“T包含任一

+0

更改'Eithor'到'Either'。 – 2011-03-27 11:22:04

1

发生错误,因为文件名不包含这两者。‘ - ’和”'在这种情况下返回indexOf-1这对于substring有效的参数

0

一个字符在这个代码

int beg = filenames[i].indexOf("-"); 
int end = filenames[i].indexOf("."); 

没有找到,所以无论是begend等于-1。这就是为什么你在调用substring时有异议的原因。

1

begend是-1。这意味着文件名不包含-.。就这么简单:)

0

问题是在被称为“名为.directory”。谢谢非常非常大家一个KDE文件: