निम्नलिखित कोड tgtEncoding को srcEncoding से एक फ़ाइल धर्मान्तरित:
public static void transform(File source, String srcEncoding, File target, String tgtEncoding) throws IOException {
BufferedReader br = null;
BufferedWriter bw = null;
try{
br = new BufferedReader(new InputStreamReader(new FileInputStream(source),srcEncoding));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target), tgtEncoding));
char[] buffer = new char[16384];
int read;
while ((read = br.read(buffer)) != -1)
bw.write(buffer, 0, read);
} finally {
try {
if (br != null)
br.close();
} finally {
if (bw != null)
bw.close();
}
}
}
--EDIT--
उपयोग करने का प्रयास-साथ-संसाधनों (जावा 7):
public static void transform(File source, String srcEncoding, File target, String tgtEncoding) throws IOException {
try (
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(source), srcEncoding));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target), tgtEncoding));) {
char[] buffer = new char[16384];
int read;
while ((read = br.read(buffer)) != -1)
bw.write(buffer, 0, read);
}
}
स्रोत
2010-06-10 21:48:32
गैर UTF8? थोड़ा सा संकीर्ण करना चाहते हैं? एक बार जब आप इनपुट एन्कोडिंग जानते हैं तो यह आसान है, और यदि आप नहीं करते हैं तो अनिवार्य रूप से असंभव है। –
कुछ विचार, फ़ाइलें बड़ी हैं (जैसे 1 जीबी) इसलिए मैं उन्हें स्ट्रिंग ऑब्जेक्ट में नहीं डाल सकता ... –
आपकी फ़ाइल का एन्कोडिंग क्या है? यदि आप लिनक्स या ओएस एक्स (और अन्य अन * एक्स) पर हैं तो आप बस टाइप कर सकते हैं: * file some_file * और यह आपको एन्कोडिंग बताएगा। बीटीडब्ल्यू, यदि आप अन * एक्स (कम से कम दोनों लिनक्स और ओएस एक्स) पर हैं, तो आपके पास * iconv * कमांड लाइन होनी चाहिए। * "मैन iconv" * कहता है: * "दिए गए फ़ाइलों के एन्कोडिंग को एक एन्कोडिंग से दूसरे में कनवर्ट करें" *, जो तर्कसंगत रूप से एक स्व-लिखित जावा उपयोग की तुलना में 1 जीबी फ़ाइल पर बेहतर काम करेगा। ध्यान दें कि UTF-8 एन्कोडिंग हर एक यूनिकोड कोडपॉइंट प्रतिनिधित्व कर सकते हैं, इसलिए कह रही है कि फ़ाइल * * संदिग्ध लग रहा है ... – NoozNooz42