Zodoath
Decapat
- Katılım
- 2 Ekim 2021
- Mesajlar
- 36
Daha fazla
- Cinsiyet
- Erkek
Merhabalar. Benden şöyle bir şey isteniyor: Bir tane dosya seçiniz. Bu dosyanın içindeki tüm dosyaları(files) ve yan dosyaları(subfolders) upper case(tüm harfleri büyük olacak şekilde) haline getiriniz ve eğer "İ,Ş,Ü,Ğ,Ö" gibi harfler varsa bunları "I,S,U,G,O" harflerine dönüştürünüz. Ben bir kısmına kadar gelebildim ama yan dosyaların içindeki dosyaların veya yan dosyaların adını değiştiremiyorum bir türlü. Ne yapmam lazım? Kod:
Java:
import java.util.*;
import java.io.*;
import java.nio.file.Files;
public class project4 {
public static void main(String[] args) {
Scanner scan= new Scanner(System.in);
System.out.print("Please enter a file name:");
String fileName=scan.nextLine();
File f= new File(fileName);
scan.close();
ArrayList<File> files= getSubFoldersandFiles(f);
files.remove(f);
System.out.println(f.getName()+" "+getFolderSize(f));
for(File folder: files) {
System.out.println(folder.getName()+" "
+getFolderSize(folder));
f.renameTo(new File(folder.getAbsolutePath(),clearTurkishChars(folder.getName())));
}
}
public static String clearTurkishChars(String str) {
String ret =str.toUpperCase(Locale.ENGLISH);
char[] turkishChars = new char[] {0x131, 0x130, 0xFC, 0xDC, 0xF6, 0xD6, 0x15F, 0x15E, 0xE7, 0xC7, 0x11F, 0x11E};
char[] englishChars = new char[] {'i', 'I', 'u', 'U', 'o', 'O', 's', 'S', 'c', 'C', 'g', 'G'};
for (int i = 0; i < turkishChars.length; i++) {
ret = ret.replaceAll(new String(new char[]{turkishChars}), new String(new char[]{englishChars}));
}
return ret;
}
public static long getFolderSize(File folder)
{
long length = 0;
if(!folder.isDirectory()) {
length+=folder.length();
}
else {
File[] files = folder.listFiles();
int count = files.length;
// loop for traversing the directory
for (int i = 0; i < count; i++) {
if (files.isFile()) {
length += files.length();
}
else {
length += getFolderSize(files);
}
}
}
return length;
}
static ArrayList<File> getSubFoldersandFiles(File f) {
Queue<File> q = new LinkedList<>();
q.add(f);
ArrayList<File> res = new ArrayList<>();
while(!q.isEmpty()) {
File cur = q.remove();
if(cur.isDirectory()) {
res.add(cur);
for(File ch: cur.listFiles()) {
q.add(ch);
}
}
else
res.add(cur);
}
System.out.println("");
return res;
}
}
Son düzenleyen: Moderatör: