将Java文件转换为大写和小写
我正在尝试将目录中的所有文件名更改为不同大小写组合的上下示例:TextFile==TextFile,更改名称后,我希望打开文件并使其中的所有文本与上面的大小写相同,但我不知道如何更改。我有将大小写更改为我想要的大小写的代码,但它将其加倍,例如:TextFile==tetextfifile。。。我该怎么做呢这是我到目前为止所做的代码将Java文件转换为大写和小写,java,file-io,uppercase,lowercase,Java,File Io,Uppercase,Lowercase,我正在尝试将目录中的所有文件名更改为不同大小写组合的上下示例:TextFile==TextFile,更改名称后,我希望打开文件并使其中的所有文本与上面的大小写相同,但我不知道如何更改。我有将大小写更改为我想要的大小写的代码,但它将其加倍,例如:TextFile==tetextfifile。。。我该怎么做呢这是我到目前为止所做的代码 import java.io.File; public class FileOps { public static File folder = new Fi
import java.io.File;
public class FileOps {
public static File folder = new File("C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files");
public static File[] listOfFiles = folder.listFiles();
public static void main(String[] argv) throws IOException {
toUpperCase();
}
public static void toUpperCase() {
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
String name = null;
int value = 1;
// this for should loop trough current file name and change letters
for (int j = 0; j < listOfFiles[i].getName().length(); j++) {
if (value == 1) {
name += Character.toLowerCase(listOfFiles[i].getName().charAt(j));
value = 2;
}
if (value == 2) {
name += Character.toUpperCase(listOfFiles[i].getName().charAt(j));
value = 1;
}
}
if (listOfFiles[i].renameTo(new File(folder, name))) {
// Here it should go into the file and make the content to the same type case as the name, But how can I open the file and do the same thing with the content as I do in the name?
System.out.println("Done");
} else {
System.out.println("Nope");
}
}
}
}
}
导入java.io.File;
公共类文件操作{
公共静态文件夹=新文件(“C:\\Users\\N\\Desktop\\newfolder\\RenamingFiles\\src\\renaming\\Files”);
公共静态文件[]listOfFiles=folder.listFiles();
公共静态void main(字符串[]argv)引发IOException{
toUpperCase();
}
公共静态无效toUpperCase(){
for(int i=0;i
我建议您首先创建一个helper方法,一次混合一个字符串
,比如-
public static String mixCase(String in) {
StringBuilder sb = new StringBuilder();
if (in != null) {
char[] arr = in.toCharArray();
if (arr.length > 0) {
char f = arr[0];
boolean first = Character.isUpperCase(f);
for (int i = 0; i < arr.length; i++) {
sb.append((first) ? Character.toLowerCase(arr[i])
: Character.toUpperCase(arr[i]));
first = !first;
}
}
}
return sb.toString();
}
输出为
tExTfIlE
ReVeRsE
您的代码存在一些问题:
String name = null;
不要以null
String
开头,否则,当您第一次将某些内容连接到文件名时,文件名将以“null”开头。以空的字符串开头
:
String name = "";
但是,你的主要问题是:
if (value == 1) {
// ...
value = 2;
}
if (value == 2) {
// ...
value = 1;
}
当值为1
时,您将始终输入两个if
,因为在第一个if
块的末尾,您将值更改为2
,并在第二个块的开头测试值是否为2
。如果要这样做,您必须添加一个else
:
if (value == 1) {
// ...
value = 2;
} else if (value == 2) {
// ...
value = 1;
}
把你自己放在计算机的位置上,完成循环。请特别注意
if(value==…)
检查。如果在第一次更改值后添加countinue;,它会工作吗?
if (value == 1) {
// ...
value = 2;
} else if (value == 2) {
// ...
value = 1;
}