importjava.io.File;
importjava.io.RandomAccessFile;
/**
*2016年8月31日下午7:00:37
*
*@author3306TODO計算位元組數
*
*/
publicclassFileUtil{
publicstaticvoidmain(String[]args){
StringfilePath="d:/test.txt";//d盤必須存在test.txt文件
readEachLine(filePath);
}
/**
*列印文件每一行的位元組數
*
*@paramfilePath
*文件路徑
*/
privatestaticvoidreadEachLine(StringfilePath){
try{
Filefile=newFile(filePath);
if(file.exists()){//文件存在
RandomAccessFileaccessFile=newRandomAccessFile(file,"r");//只賦予讀的許可權
Stringline="";
longlineIndex=1;
while(null!=(line=accessFile.readLine())){
System.out.println("line"+(lineIndex++)+":"+line.getBytes().length);//列印行號和位元組數
}
accessFile.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
『貳』 用java如何讀取一個文件的指定位元組位置的數據
可以使用RandomAccessFile類。例如要從100位元組開始輸出工作目錄下的.txt文件的類容。
package konw.test1;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test1
{
public static void main(String[] args)
{
long pos = 100;
try
{
String str = "";
RandomAccessFile randomAccessFile = new RandomAccessFile("data.txt", "rw");
randomAccessFile.seek(pos);//將文件流的位置移動到pos位元組處
while( (str = randomAccessFile.readLine()) != null)
{
System.out.println(str);
}
randomAccessFile.close();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
『叄』 (java)如何獲取字元串的位元組數!
字元串是可以轉變成位元組數組,然後統計一下位元組數組的長度即可,參考如下代碼:
Java語言中,中文字元所佔的位元組數取決於字元的編碼方式,一般情況下,採用ISO8859-1編碼方式時,一個中文字元與一個英文字元一樣只佔1個位元組;採用GB2312或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。
public static void main(String []args) throws UnsupportedEncodingException {
運行結果:2
System.out.println("測試".getBytes("ISO8859-1").length);
運行結果:4
System.out.println("測試".getBytes("GB2312").length);
運行結果:4
System.out.println("測試".getBytes("GBK").length);
運行結果:6
System.out.println("測試".getBytes("UTF-8").length);
}
C#截取字元串位元組數 代碼如下:
public int bytelenght(string str)
{
byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
int j = 0;
for (int i = 0; i < bytestr.GetLength(0); i++)
{
if (i % 2 == 0)
{
j++;
}
else
{
if (bytestr[i] > 0)
{
j++;
}
}
}
return j;
}
謝謝採納
定義一個字元數組,然後根據字元長度循環得到字元
比如char ch[20];
這個20可以用字元實際長度getlength()獲取
然後再循環獲取字元
ch[i]
其實用不著那麼復雜計算的。注意:C#中string.Length只是計算字元串「字元」的個數,不計算位元組;但是漢字兩個位元組+數字(英文字元)一個位元組,才是6個,簡單的代碼如下: byte[] bytes = Encoding.Default.GetBytes("1243我"); Default(根據自己究竟是漢字還是數字等,自動合理分配內存所需要的位元組空間)
Console.WriteLine(bytes.Length);
byte[] System.Text.Encoding.Default.GetBytes(string s)
你就是一個byte一個byte讀取的吧?一個漢字兩個byte(不含surrogate情況),文件中存兩個byte,你從文件中讀取2個byte,就是這樣 查看原帖>>
strRead = String.ValueOf(strRead.toCharArray(), 0, byBuffer.length]); 2、字元串轉換成位元組數組 byte[] byBuffer = new byte[200]; byBuffer= strInput.getBytes();注意:如果字元串裡面含有中文,要特別注意,在android系統下,默認是UTF8編碼,一個中文字元相當於3個位元組,只有gb2312下一個中文相當於2位元組。
『肆』 用java代碼如何查看本地一個文件的大小
publicstaticvoidgetFileSize(Stringpath){
//傳入文件路徑
Filefile=newFile(path);
//測試此文件是否存在
if(file.exists()){
//如果是文件夾
//這里只檢測了文件夾中第一層如果有需要可以繼續遞歸檢測
if(file.isDirectory()){
intsize=0;
for(Filezf:file.listFiles()){
if(zf.isDirectory())continue;
size+=zf.length();
}
System.out.println("文件夾"+file.getName()+"Size:"+(size/1024f)+"kb");
}else{
System.out.println(file.getName()+"Size:"+(file.length()/1024f)+"kb");
}
//如果文件不存在
}else{
System.out.println("此文件不存在");
}
}
『伍』 Java字元流讀取文檔,統計位元組數,計算字元串出現次數,字元串代替,另存文檔
packagep1;
importjava.io.FileReader;
importjava.io.FileWriter;
publicclassJ_ReadTxt
{
="柳永宋詞.txt";
="景庄婉約.txt";
publicstaticvoidmain(String[]args)
{
[]cs=newchar[1];
intcount=0;
Stringresult="";
try
{
FileReaderfr=newFileReader(LIUYONG);
while(-1!=fr.read(cs))
{
Stringtemp=String.valueOf(cs);
result+=temp;
intb=temp.codePointAt(0);
if(b>127)
{
count+=2;
}
else
{
count++;
}
}
fr.close();
System.out.println("文檔的位元組數:"+count);
Stringtemp=""+result+"";
System.out.println("字元串「柳永」出現的次數:"+(temp.split("u67f3u6c38").length-1));
result=result.replaceAll("u67f3u6c38","u666fu5e84");
FileWriterfw=newFileWriter(JINGZHUANG);
fw.write(result);
fw.flush();
fw.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
『陸』 java讀取文件時如何獲得已讀取的位元組大小
//查看例子即可。
importjava.awt.BorderLayout;
importjava.awt.Cursor;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.beans.PropertyChangeEvent;
importjava.beans.PropertyChangeListener;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.io.OutputStream;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JProgressBar;
importjavax.swing.SwingWorker;
{
=1L;
privatestaticfinalintMIN=0;
privatestaticfinalintMAX=100;
;
privateJButton;
privateTasktask;
publicBar(Stringtitle)
{
setTitle(title);
setLayout(newBorderLayout());
progressBar=newJProgressBar(MIN,MAX);
progressBar.setValue(MIN);
progressBar.setStringPainted(true);
add(progressBar,BorderLayout.CENTER);
=newJButton("拷貝");
.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
start();
.setEnabled(false);
}
});
add(,BorderLayout.EAST);
}
classTaskextendsSwingWorker<Void,Void>
{
@Override
publicVoiddoInBackground()
{
setProgress(MIN);
Filefile=newFile("a.jpg");
longsize=file.length();
byte[]bts=newbyte[(int)(size/(Math.random()*50+MAX-50))];
intlength=0;
longcLength=0;
try
{
InputStreamstream=newFileInputStream(file);
OutputStreamos=newFileOutputStream(newFile("_aa.jpg"));
while((length=stream.read(bts))>0)
{
os.write(bts,0,length);
cLength+=length;
setProgress((int)(cLength*MAX/size));
Thread.sleep(30);
}
os.flush();
os.close();
stream.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
returnnull;
}
@Override
publicvoiddone()
{
setTitle("拷貝完畢");
Toolkit.getDefaultToolkit().beep();
.setEnabled(true);
setCursor(null);
}
}
publicvoidpropertyChange(PropertyChangeEventevt)
{
if("progress"==evt.getPropertyName())
{
intprogress=(Integer)evt.getNewValue();
progressBar.setValue(progress);
}
}
privatevoidstart()
{
task=newTask();
task.addPropertyChangeListener(this);
task.execute();
setTitle("正在拷貝...");
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
()
{
Barframe=newBar("Bar");
frame.setAlwaysOnTop(true);
frame.setSize(280,60);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
publicstaticvoidmain(String[]args)
{
javax.swing.SwingUtilities.invokeLater(newRunnable()
{
publicvoidrun()
{
createAndShowGUI();
}
});
}
}
『柒』 如何用java讀取一個文件中的位元組
BufferedReader br=new BufferedRead(new FileReader(file))
StringBuffer sb=new StringBuffer();
String line;
while((line=br.readLine())!=null){
sb.append(line);
}