Strange bug with the java.io.File class

Hi everibody!
I'm writting a system to upload images with JSF and RichFaces. But when i try to delete the images files sometimes hapen some strange bug.
first i'll post my method code here:
public void deleteUploadedFile(ActionEvent event) throws Throwable {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("fileId");
        TheFile file = this.uploadedFiles.get((Integer) param.getValue());
        try {
            File f = new File(file.getPath(), file.getName());
            if ((f.exists()) && (f.canRead()) && (f.canWrite())) {
                if(f.delete()){
                    for(int i=0; i<file.getThumbs().size(); i++){
                        File t1 = new File(file.getPath(), file.getThumbs().get(i).getThumbName());
                        t1.delete();
                    setDeleted(true);
                else{
                    setDeleteLog("Arquivo não pode ser excluido");
                    setDeleted(false);
            } else {
                setDeleteLog("Erro ao tentar excluir o arquivo");
                setDeleted(false);
            this.finalize();
        } catch (Exception ex) {
            setDeleteLog("Deu erro: " + ex);
        } finally {
            if (this.deleted) {
                if (this.uploadedFiles.remove(file)) {
                    setDeleteLog("Conseguiu remover");
                } else {
                    setDeleteLog("Deu erro");
    }Well, when the method run the f.delete() line, sometimes, something strange hapen. With is, the file data is deleted as expected, but the file it self is not deleted. And even when i run the line this.finalize the JVM still using the file, with don't allows me to try to delete it untill my tomcat stop (with kill the application that was using the file). And this don't hapen every time that i try to delete one file.
And worse, once it hapen every next time that i try to delete one file hapen the same bug.
My question is...what could it be, and what can i do to solve this?!

About this is not a possible cause. Because before i upload a file I verify if the file already exists and even after i change the file name:
//this method change the file name and eliminate all the special characters, and also attach the current day of month,
//month, year, minute and second to the file name
public String generateFileName(String fileName){
        Locale l = new Locale("pt","BR");
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(TimeZone.getTimeZone("GMT-3").getID()), l);
        int ext = fileName.lastIndexOf('.');
        String name = fileName.replace(fileName.substring(ext), "");
        String newName = RemoverAcentos.remover(name).toLowerCase()+cal.get(cal.DAY_OF_MONTH)+cal.get(cal.MONTH)
                +cal.get(cal.YEAR)+cal.get(cal.MINUTE)+cal.get(cal.SECOND)+fileName.substring(ext);
        return newName;
    }the upload method
String fileName = generateFileName(item.getFileName());
        try {
            File uploadFile = new File(filepath, fileName);
            if (!uploadFile.exists()) {

Similar Messages

  • How can I rewrite the java.io.file class to a custom file class?

    Hi All!
    Im new to Java. Well, I did some experiments with small Applets. Because it is not allowed to use Files in an unsigned Applet, I need to know, how I can manage to overwrite the java.io.File class. The background: I have to port some Applications which need file access into Applets.
    I think it is necessary to create a class with the same signature then the Java.io.File that stores the information in an database on the Webserver or read information from there. Then overload the java.io.File with my custom file class.
    Is this possible and, if so, how?
    Thanks!

    Hi yawmark !
    Thanks for the quick answer! My idea to store the filecontent into a database is caused by the plan to make the application-port independent from the workstation executing it. So it would be a nice feature storing the "files" into a database.
    JavaBeginner2009

  • File Access with unsigned Applet through editing the java.policy file

    I'am starting to lose my hair on this...
    I am trying to get an applet to run so that it can access the file system to move files on my local maschin. Because this applet is only running on my VM i can change the java.policy to avoid the signing of the applet.
    first of all, if i wrote in the java.policy file
    grant {
      permission java.security.AllPermission; 
    };everything is working perfekt.
    But I have not the intention to open the gates for any applet out there, so i want to limit the access to my applet. With every of the following versions I get at best an
    java.security.AccessControlException: access denied (java.io.FilePermission...
    My Setup
    My Java Version: jre1.6.0_02
    My applet is located unter the url
    http://admin.mydomain.com/applet.jar
    In Html i tryed the following different versions of loading the applet - none worked
    <applet codebase="http://admin.mydomain.com/" name="shortcut" code="start.class" archive="applet.jar" width="0" height="0"></applet>
    <applet codebase="http://admin.mydomain.com" name="shortcut" code="start.class" archive="applet.jar" width="0" height="0"></applet>
    <applet name="shortcut" code="start.class" archive="http://admin.mydomain.com/applet.jar" width="0" height="0"></applet>in java.policy i tryed following versions with every html applet load version
    grant codeBase "http://admin.x-press.de/-" {
      permission java.security.AllPermission; 
    grant codeBase "http://admin.x-press.de/+" {
      permission java.security.AllPermission; 
    grant codeBase "http://admin.x-press.de/applet.jar" {
      permission java.security.AllPermission; 
    };why is it with
    grant {
      permission java.security.AllPermission; 
    };working, and not with the other versions?
    i am almost bold now, please try to save my last hair from falling down.
    any suggestion would be nice
    thanks, feyyaz
    Message was edited by:
    feyyazdogu

    I read the mentioned documentation and your right, some of my versions were wrong, but after reading the doumentation again i came to following result which should had worked but didn't.
    java.policy
    grant codeBase "http://admin.mydomain.com/*" {
      permission java.security.AllPermission;
    HTML File
    <applet codebase="http://admin.mydomain.com/" name="shortcut" code="start.class" archive="applet.jar" height="0" width="0"></applet>if I am entering http://admin.mydomain.com/applet.jar i can download the jar, so the archive lays in the correct directory.
    what i am doing wrong? do i have to change an additional file somewhere else?

  • How to print the image data stored in object of 'java.io.File' Class in jsp

    I have created a file object for the image file in the system temporary directory.Now I want to display it in my page. please tell,How to print the image data stored in object(in my program it is imgr) of 'java.io.File' Class in jsp

    Create a servlet which gets an InputStream of the file and writes it to the OutputStream of the response and call this servlet in `src` attribute. That's basically all.
    Here's an example which covers the most of the minimum needs: [http://balusc.blogspot.com/2007/04/imageservlet.html].

  • Servlet failed with Exception java.lang.LinkageError: Class javax/servlet/ServletConfig

              Hi
              I registered a web app with Weblogic 5.1 in the weblogic.properties file. I try
              to run the web app from my browser typing http://localhost:7001/xxx(Webapp name)
              and a jsp page. Following is the error I get. It would be helpful if some one
              could point me to a fix for this problem
              Tue May 01 13:56:41 CDT 2001:<I> <ServletContext-omxclient> Generated java file:
              D:\weblogic\myserver\omxclient\_tmp_war\jsp_servlet\_omx\_login.java
              Tue May 01 13:56:43 CDT 2001:<E> <ServletContext-omxclient> Servlet failed with
              Exception
              java.lang.LinkageError: Class javax/servlet/ServletConfig violates loader constr
              aints
              at jsp_servlet._omx._login._jspService(_login.java:59)
              at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:105)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:123)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              textImpl.java:742)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              textImpl.java:686)
              at weblogic.servlet.internal.ServletContextManager.invokeServlet(Servlet
              ContextManager.java:247)
              at weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.jav
              a:361)
              at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              

              Sorry, I didn't look very closely - the exception is for
              javax.servlet.ServletConfig - should be in weblogicaux.jar.
              Is there anything wrong with it? What service pack are you
              using? Could be a problem with weblogic.policy.
              mike
              >>java.lang.LinkageError: Class javax/servlet/ServletConfig
              "KC" <[email protected]> wrote:
              >
              >Hi Mike
              >The login.jsp page just contains a javascript function and two text boxes
              >in it.
              >Will try making changing it. If that is not the issue could you let me
              >know of
              >any other issues.
              >
              >"mreiche" <[email protected]> wrote:
              >>
              >>I would guess that login.jsp is a very large JSP and that
              >>the generated service method is too large for the classloader's
              >>liking. Try making it smaller.
              >>
              >>Mike
              >>
              >>
              >>"KC" <[email protected]> wrote:
              >>>
              >>>Hi
              >>>I registered a web app with Weblogic 5.1 in the weblogic.properties
              >>file.
              >>>I try
              >>>to run the web app from my browser typing http://localhost:7001/xxx(Webapp
              >>>name)
              >>>and a jsp page. Following is the error I get. It would be helpful if
              >>>some one
              >>>could point me to a fix for this problem
              >>>
              >>>Tue May 01 13:56:41 CDT 2001:<I> <ServletContext-omxclient> Generated
              >>>java file:
              >>> D:\weblogic\myserver\omxclient\_tmp_war\jsp_servlet\_omx\_login.java
              >>>Tue May 01 13:56:43 CDT 2001:<E> <ServletContext-omxclient> Servlet
              >>failed
              >>>with
              >>>Exception
              >>>java.lang.LinkageError: Class javax/servlet/ServletConfig violates
              >loader
              >>>constr
              >>>aints
              >>> at jsp_servlet._omx._login._jspService(_login.java:59)
              >>> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              >>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              >>>pl.java:105)
              >>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              >>>pl.java:123)
              >>> at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              >>>textImpl.java:742)
              >>> at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              >>>textImpl.java:686)
              >>> at weblogic.servlet.internal.ServletContextManager.invokeServlet(Servlet
              >>>ContextManager.java:247)
              >>> at weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.jav
              >>>a:361)
              >>> at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
              >>>
              >>> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              >>>
              >>>
              >>
              >
              

  • Can I create a cert with the Java API only?

    I'm building a client/server app that will use SSL and client certs for authenticating the client to the server. I'd like for each user to be able to create a keypair and an associated self-signed cert that they can provide to the server through some other means, to be included in the server's trust store.
    I know how to generate a key pair with an associated self-signed cert via keytool, but I'd prefer to do it directly with the Java APIs. From looking at the Javadocs, I can see how to generate a keypair and how to generate a cert object using an encoded representation of the cert ( e.g. java.security.cert.CertificateFactory.generateCertififcate() ).
    But how can I create this encoded representation of the certificate that I need to provide to generateCertificate()? I could do it with keytool and export the cert to a file, but is there no Java API that can accomplish the same thing?
    I want to avoid having the user use keytool. Perhaps I can execute the appropriate keytool command from the java code, using Runtime.exec(), but again a pure java API approach would be better. Is there a way to do this all with Java? If not, is executing keytool via Runtime.exec() the best approach?

    There is no solution available with the JDK. It's rather deficient wrt certificate management, as java.security.cert.CertificateFactory is a factory that only deals in re-treads. That is, it doesn't really create certs. Rather it converts a DER encoded byte stream into a Java Certificate object.
    I found two ways to create a certificate from scratch. The first one is an all Java implementation of what keytool does. The second is to use Runtime.exec(), which you don't want to do.
    1. Use BouncyCastle, a free open source cryptography library that you can find here: http://www.bouncycastle.org/ There are examples in the documentation that show you how to do just about anything you want to do. I chose not to use it, because my need was satisfied with a lighter approach, and I didn't want to add a dependency unnecessarily. Also Bouncy Castle requires you to use a distinct version with each version of the JDK. So if I wanted my app to work with JDK 1.4 or later, I would have to actually create three different versions, each bundled with the version of BouncyCastle that matches the version of the target JDK.
    2. I created my cert by using Runtime.exec() to invoke the keytool program, which you say you don't want to do. This seemed like a hack to me, so I tried to avoid it; but actually I think it was the better choice for me, and I've been happy with how it works. It may have some backward compatibility issues. I tested it on Windows XP and Mac 10.4.9 with JDK 1.6. Some keytool arguments changed with JDK versions, but I think they maintained backward compatibility. I haven't checked it, and I don't know if I'm using the later or earlier version of the keytool arguments.
    Here's my code.
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.security.KeyStore;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.CertificateException;
    import javax.security.auth.x500.X500Principal;
    import javax.swing.JOptionPane;
    public class CreateCertDemo {
         private static void createKey() throws IOException,
          KeyStoreException, NoSuchAlgorithmException, CertificateException{
         X500Principal principal;
         String storeName = ".keystore";
         String alias = "keyAlias";
         principal = PrincipalInfo.getInstance().getPrincipal();
         String validity = "10000";
         String[] cmd = new String[]{ "keytool", "-genKey", "-alias", alias, "-keyalg", "RSA",
            "-sigalg", "SHA256WithRSA", "-dname", principal.getName(), "-validity",
            validity, "-keypass", "keyPassword", "-keystore",
            storeName, "-storepass", "storePassword"};
         int result = doExecCommand(cmd);
         if (result != 0){
              String msg = "An error occured while trying to generate\n" +
                                  "the private key. The error code returned by\n" +
                                  "the keytool command was " + result + ".";
              JOptionPane.showMessageDialog(null, msg, "Key Generation Error", JOptionPane.WARNING_MESSAGE);
         KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
         ks.load(new FileInputStream(storeName), "storePassword".toCharArray());
            //return ks from the method if needed
    public static int doExecCommand(String[] cmd) throws IOException{
              Runtime r = Runtime.getRuntime();
              Process p = null;
              p = r.exec(cmd);
              FileOutputStream outFos = null;
              FileOutputStream errFos = null;
              File out = new File("keytool_exe.out");
              out.createNewFile();
              File err = new File("keytool_exe.err");
              err.createNewFile();
              outFos = new FileOutputStream(out);
              errFos = new FileOutputStream(err);
              StreamSink outSink = new StreamSink(p.getInputStream(),"Output", outFos );
              StreamSink errSink = new StreamSink(p.getErrorStream(),"Error", errFos );
              outSink.start();
              errSink.start();
              int exitVal = 0;;
              try {
                   exitVal = p.waitFor();
              } catch (InterruptedException e) {
                   return -100;
              System.out.println (exitVal==0 ?  "certificate created" :
                   "A problem occured during certificate creation");
              outFos.flush();
              outFos.close();
              errFos.flush();
              errFos.close();
              out.delete();
              err.delete();
              return exitVal;
         public static void main (String[] args) throws
              KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException{
              createKey();
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    //Adapted from Mike Daconta's StreamGobbler at
    //http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4
    public class StreamSink extends Thread
        InputStream is;
        String type;
        OutputStream os;
        public StreamSink(InputStream is, String type)
            this(is, type, null);
        public StreamSink(InputStream is, String type, OutputStream redirect)
            this.is = is;
            this.type = type;
            this.os = redirect;
        public void run()
            try
                PrintWriter pw = null;
                if (os != null)
                    pw = new PrintWriter(os);
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String line=null;
                while ( (line = br.readLine()) != null)
                    if (pw != null)
                        pw.println(line);
                    System.out.println(type + ">" + line);   
                if (pw != null)
                    pw.flush();
            } catch (IOException ioe)
                ioe.printStackTrace(); 
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import javax.security.auth.x500.X500Principal;
    public class PrincipalInfo {
         private static String defInfoString = "CN=Name, O=Organization";
         //make it a singleton.
         private static class PrincipalInfoHolder{
              private static PrincipalInfo instance = new PrincipalInfo();
         public static PrincipalInfo getInstance(){
              return PrincipalInfoHolder.instance;
         private PrincipalInfo(){
         public X500Principal getPrincipal(){
              String fileName = "principal.der";
              File file = new File(fileName);
              if (file.exists()){
                   try {
                        return new X500Principal(new FileInputStream(file));
                   } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return null;
              }else{
                   return new X500Principal(defInfoString);
         public void savePrincipal(X500Principal p) throws IOException{
              FileOutputStream fos = new FileOutputStream("principal.der");
              fos.write(p.getEncoded());
              fos.close();
    }Message was edited by:
    MidnightJava
    Message was edited by:
    MidnightJava

  • Very strange bug with compareTo: returning incorrect results

    Hello everyone! I have used the method compareTo many times to maintain my database project's entries. However recently I have discovered a bug, in which:
    a and b both being Storage type objects:
    private static class Storage {
    object data
    int nextData //an array stores the Storage objects
    int previousData //this uses an integer to locate previous in array
    Problem:
    ((Comparable)(a.data)).compareTo((Comparable)(b.data)) returns a 3, when a.data is clearly 5, and b.data is clearly 20.
    This is very strange, as the compareTo should return a -1 instead of a positive number. Is this a known bug with the compareTo method? I have been using it reliably for many programs but this is the first time it ever occurs to me.

    Problem:
    ((Comparable)(a.data)).compareTo((Comparable)(b.data))
    returns a 3, when a.data is clearly 5, and b.data is
    clearly 20.
    This is very strange, as the compareTo should return a
    -1 instead of a positive number. Is this a known bug
    with the compareTo method? I have been using it
    reliably for many programs but this is the first time
    it ever occurs to me.Not really... comparing Strings "5" to "20"
    is really the same as comparing "5" to "2"
    being the first character of the string, difference
    being, surprise, surprise = 3.
    If you want the Strings to be comparable that way you should left-fill them with spaces or zeros.
    Or, better still, override compareTo and make your Storage implement Comparable instead of all that casting of the data objects.

  • Traversing the Java Jar file

    Hi,
    This might sound like a weird question, but I need to traverse the Java Jar file and create respective Java objects into objects in some other language using reflection.
    Is it possible to find the path for the class files located in any jar file? Does Java supports traversing or reading and finding jar contents?
    Thanks

    I found a way to traverse the Jar, using java.util.zip, one can create a zip file for the given jar file and using ZipEntry it is possible to findout the properties associated with the jar/zip entries.

  • Java.io.File class file

    hi may i know how can i get this java.io.File class file, where can i download it from to use it.

    Nothing..... just a visit from the Deprecation Fairy..... she was a little plastered and removed
    java.io.File by mistake .... :)

  • Trying to access the java script files via jar file in WEB SERVER

    hi all,
    I am trying to access the java script files via jar file ,which is present in Apache webserver in order to minimise the number of hits to app server.some thing like cache ...
    in jsp the code goes like this...
         <script type="text/javascript"  archive="http://localhost:14000/dojo.jar!" src="dojo.jar/parser.js" " ></script>{code}
    But i am not able to access the js file which is put in jar file present in the  webserver.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hi,
    You can use DWR (Direct Web remoting) for that. It is easy AJAX for java. ou can directly call the java script function from java class and also java class from javaScripts..
    Regards,
    Hardik

  • When trying to edit a photo, it disappears (black screen) or screen is full of lines. Is this a bug with the latest software update?

    After updating with the latest software, when trying to edit a photo, it disappears (black screen) or screen is full of lines. If I blindly crop or edit the photo, when I exit edit mode, those changes have been made, but obviously this is unacceptable. Is this a bug with the latest software update?

    There are several possible causes for the Black Screen issue
    1. Permissions in the Library: Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild. Include the option to check and repair permissions.
    2. Minor Database corruption: Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild.
    3. A Damaged Photo: Select one of the affected photos in the iPhoto Window and right click on it. From the resulting menu select 'Show File (or 'Show Original File' if that's available). (On iPhoto 11 this option is under the File -> Reveal in Finder.) Will the file open in Preview? If not then the file is damaged. Time to restore from your back up.
    4. A corrupted iPhoto Cache: Trash the com.apple.iPhoto folder from HD/Users/Your Name/ Library/ Caches...
    5. A corrupted preference file: Trash the com.apple.iPhoto.plist file from the HD/Users/ Your Name / library / preferences folder. (Remember you'll need to reset your User options afterwards. These include minor settings like the window colour and so on. Note: If you've moved your library you'll need to point iPhoto at it again.)
    If none of these help: As a Test:
    Hold down the option (or alt) key key and launch iPhoto. From the resulting menu select 'Create Library'
    Import a few pics into this new, blank library. Is the Problem repeated there?

  • Downloaded 11.0.3 (42) 64 bit to my MacBook Pro and it crashes every time I select a song a use the 'add to' function to add to a play list. It's never done this before, is it a bug with the new version?

    downloaded 11.0.3 (42) 64 bit to my MacBook Pro and it crashes every time I select a song a use the 'add to' function to add to a play list. It's never done this before, is it a bug with the new version?

    You could just disable updates. Change these settings in about:config.
    * app.update.auto - set to false
    * app.update.enabled - set to false
    You can still check for updates with the "Check for Updates" button in the About Firefox window, but it will download the update file anyway if there is an update available. You can also check which is the current release from here:
    * http://sjc.mozilla.com/en-US/firefox/new/

  • The Java JAR file "minecraft.jar" could not be launched.

    I just downloaded a new version of this game called Minecraft and it says: The Java JAR file "minecraft.jara" could not be launched. Check the console for possible error messages. I have checked the Console and it says: 
    15/10/2011 23:11:08 [0x0-0x1d01d].com.apple.JarLauncher[191] Failed to load Main-Class manifest attribute from
    15/10/2011 23:11:08 [0x0-0x1d01d].com.apple.JarLauncher[191] /Users/sabi1110/Desktop/minecraft.jar/minecraft.jar
    Help?

    How to Diagnose Jar File Problems
    Open Applications > Utilities > Terminal.app, and then type in the following:
    java -version
    java -jar <drag the minecraft.jar file here>
    Then press Enter. Copy and paste whatever error message appears.

  • WCF WSDL shoud match with the JAVA WSDL

    Hi All,
    I have a requirement where I have the JAVA WSDL which was successfully ported to .net 4.5 as server interface. While I try to run the services by implementing the interface the WSDL output from .net doesnt match with the java wsdl.
    Can somebody say whether its possible? or is there any work around for this.
    For example 
    Java WSDL 
    <message name="submit">
    But .NET WSDL 
    <wsdl:message name="ISubmitServiceSoap_submit_OutputMessage">
    thanks,

    It is not possible.
    WCF WSDL and JAVA WSDL has his own rule for the services, so they shoule be hard for match. But we can use the svcutil.exe(https://msdn.microsoft.com/en-us/library/aa347733(v=vs.110).aspx)
    to generate proxy code and config file.

  • Strange happenings with the OS X mail...

    While I'm presently using the latest Mavericks edition, I've noticed the follow strange behavior with the immediate previous OS X versions as well.
    When I'm sending an email and have NO other outbound email waiting to go, I see various numbers of outbound emails in the lower activity section.  For example, I can be sending one email and the activity window says there are any number going out.  A few minutes ago I saw 11 going out, but the number seems to vary from 5 to maybe 15 outbound emails.
    I see the same indication with incoming emails. The counter may say 15 or some other number of inbound emails when I actually receive far less.
    I'm wondering why this is, especially with the outbound email number being several more than I'm actually sending.  There is no indication in the "sent" folder other than the primary email(s) I've sent.
    The short version of this is could I have a virus that is sending data to someone I don't know?  Other than OS X mail, I've never seen this happen when using Windows. 
    Can anyone explain why this is happening?

    It sounds like a counter variable isn't being reset. You get this quite a lot in software where there is a loop counter that the programmer likes to use (I use i,j and k habitually) and if the counter isn't set in some kind of automatic fashion then each time you run through the loop it increments over and over. Whoever is managing the bug fixes at Apple has probably given this a priority 4 or lower and so it will never be fixed.
    I think the takeaway message is that this is probably not as big a worry as it looks. I too thought I might be sending buckets of emails as part of a botnet. The fact that it resets when you restart the whole thing makes me think it is just what is above.
    Do actual Apple employees ever look at or respond to the things that people post in these threads? It would be useful to know if it is a known bug or not.

Maybe you are looking for