मेरे आवेदन में मैं फ़ाइल का पहला 16 वर्ण पढ़ना चाहता हूं!
मैं नीचे कोड लिखता हूं लेकिन इसके लिए byte[ ] बस मुझे 43!
दिखाएं मैं पहले बाइट्स का 16 वर्ण दिखाना चाहता हूं।

मेरे कोड :

String inputFile = getRootDirPath(context) + "/" + "girnmqlyv0.pdf";
File file = new File(inputFile);
                try {
                    byte[] fileBye = FileUtils.readFileToByteArray(file);
                    Log.e("FileByte", ""+fileBye[16]);
                } catch (IOException e) {
                    e.printStackTrace();
                }

मुझे यह संदेश logcat में दिखाएं:

E/FileByte: 43

मैं फ़ाइल के fisrt 16 वर्ण कैसे प्राप्त कर सकता हूं?

0
I'm Mr 1 अगस्त 2020, 14:05

2 जवाब

सबसे बढ़िया उत्तर

पहले 16 बाइट्स से एक स्ट्रिंग बनाने के लिए, "+fileBye[16] के बजाय इसका उपयोग करें:

Log.e("FileByte", new String(fileBye, 0, 16));

ध्यान दें कि यह पहले 16 बाइट्स को डिफ़ॉल्ट वर्ण एन्कोडिंग के अनुसार एक स्ट्रिंग में बदल देता है, जो कि Android पर UTF-8 है। यदि फ़ाइल के पाठ में गैर-ASCII वर्ण हैं, तो 16 बाइट्स को 16 वर्णों में परिवर्तित नहीं किया जाएगा।


बाइट सरणी के रूप में पहले 16 बाइट्स निकालने के लिए, आप इसका उपयोग कर सकते हैं:

byte[] first16 = Arrays.copyOfRange(fileBye, 0, 16);

या आप पूरी फ़ाइल के बजाय केवल पहले 16 बाइट्स पढ़ सकते हैं:

byte[] first16 = new byte[16];
try (FileInputStream in = new FileInputStream(inputFile)) {
    in.read(first16);
}
2
Joni 1 अगस्त 2020, 14:23

अपनी सरणी के आकार को इस तरह परिभाषित करें byte[] bytes = new byte[size];

आपके मामले में आकार 16 . है

0
anehme 1 अगस्त 2020, 14:15